🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ saeed mohamadian
ایجاد ارتباط بین جدول‌ها وسورت بندی
جامعه لاراول ایجاد شده در ۱۱ آبان ۱۳۹۹

 سلام استاد

به فرض ما سه جدول داریم یکی کاربران ما می‌باشد به نام user و  جدول دیگر به نام topic که موضوعات ما در آن قرار میگیرد هر کاربر میتواند موضوعاتی را انتخاب کند و هر موضوع می‌تواند چند کاربر داشته باشد و جدول دیگر به نام point که امتیاز کاربران در آن می‌باشد هر کاربر یک امتیاز دارد و هر امتیاز متعلق به یک کاربر می‌باشد می‌خواهم api بنویسم که با انتخاب یک موضوع کاربرانی که آن موضوع را انتخاب نموده اند به همراه امتیاز آنها نمایش داده شود و بتوان بر اساس امتیاز آنها سورت بندی(sort)کرد 

$list_user =Topic::where('id',1)->with(array('users' => function($q)
        {
            $q->with('points')->get();
        }))->get();

من به این شکل توانستم به لیستم دست پیدا کنم ولی قابلیت سورت بندی به این شکل انجام نمی‌شود راه حل به چه صورت می‌باشد با تشکر

سلام ... 

این تیکه کد را تست کنید:‌

$users = Topic::find(1)->users;
$users->with(['points' => function ($query) {
    $query->orderBy('point');
}]);

 

مهرداد سامی ۱۱ آبان ۱۳۹۹، ۲۰:۴۴

نه همچین خطایی میدهد

BadMethodCallException: Method Illuminate\Database\Eloquent\Collection::with does not exist. in file C:\xampp\htdocs\gulldashboard3\vendor\laravel\framework\src\Illuminate\Support\Traits\Macroable.php on line 103

 

saeed mohamadian ۱۱ آبان ۱۳۹۹، ۲۱:۳۷