تالار گفتمان nCIS.ir

نسخه‌ی کامل: ایجاد این کوئری
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام


من میخوام با یک سلکت از پست ها مقدار ده پست اخر هر دسته رو پیدا کنم .... سپس اون پست ها رو بر اساس دسته ها نشون بدم ...
جدول هم اینجوریه که هر پست یک دسته داره و ای دی دته رو توی هر پست اوردم و ریلیشن مورد نظر رو هم نوشتم ...

این کار شدنیه ؟
سلام
میتونید از همچین کدی استفاده کنید.
تو جدول دسته بندی ها یه سلکت بزن و دسته هایی رو که میخوای رو انتخاب کن بعد با جوین پست های مربوط به اونا رو دربیار.
کد:
SELECT p.title, p.desc, p.cat_id, c.id, c.title as category
FROM categories AS c
INNER JOIN posts AS p ON p.cat_id = c.id
WHERE publish=1
ORDER BY id DESC
LIMIT 10
نیاز به چنین کدی نیست از فریمورک استفاده می کنی تا وقتتو صرف نوشتن چنین کدهای SQL پیچیده ای نکنی

تو مدل هاتون relation ها رو اگه تعریف نکردین تعریف کنید طبق این آموزش : http://forum.ncis.ir/Thread-%D8%A2%D9%85...32#pid5332

حالا کافیه به صورت Eager Loading تمام پست های همه دسته ها رو بدست بیارید:
$categories = Category::with('posts')->get();

وقتی به ویو اونو پاس دادی میتونی به این صورت 10 تا پست هر دسته رو نشون بدی
                @foreach($categories as $category)
                    <h2>{{ $category->name }}</h2>
                    <ul>
                    @foreach($category->posts->take(10) as $post)
                        <li>{{ $post->title }}</li>
                    @endforeach
                    </ul>
                @endforeach
خسته نباشی و دستت درد نکنه اما ....

در این حالت برای سورت کردن یا مرتب کردن(پست ها ) باید چیکار کرد ؟؟
اینو امتحان کنید (http://laravel.com/docs/5.1/eloquent-relationships Constraining Eager Loads)

$categories = Category::with(['posts' => function ($query) {
    $query->orderBy('created_at', 'desc');
}])->get();
sort کردن یا گزاشتن شرط هم به روشی که آقای سهرابی گفتند هست