راکت
حل شده

گذاشتن شرط در ارتباطات

3 پاسخ

سلام وقت بخیر.
با استفاده از eloquent می خوام شرط زیر رو بزارم.
من یک جدول کاربر دارم که گروه بندی شده. به نام user و category

حالا موقع جستجو می خوام بگم که کاربرانی که در گروه فلان قرار دارن برام لیست بشن.

اینم دارم که کاربرانی که در یک کلاس درسی فلان هم هستن بیاره.
در واقعا یعنی کاربرانی که در گروه فلانی و در کلاس درسی فلان هستن لیست بشه.

اگر چند به چند و یک به چندش با هم فرق داره توضیح بدید.ممنونم.

ثبت پرسش جدید

پاسخ‌ها

3
کیارش مالکی
کیارش مالکی
@nader.register

تخصص: Backend developer

بهترین پاسخ

سلام آخرش پیداش کردم. کد رو باید به این صورت نوشت.

        Courses::whereHas("categories" , function ($query) use ($cat) {
            $query->whereIn("id", $cat);
        });
رضا پارسیان
رضا پارسیان
@Rp76

تخصص: توسعه دهنده Php , Laravel

سلام
برای اینکار رابطه های eloquent خیلی کمک میکنه
تو فقط کافیه کاربر هارو انتخاب کنی بعد از تابع هایی که توی مدل کاربر ساختی استفاده کنی
به این صورت :

// in function baraye gereftan goroh hai hast ke user tosh ozve
public function Category(){
    return $this->hasMany(category::class,"id","category_id");
}

اگر کاربرهایی رو بخوای که توی گروه خاصی هستند باید اینکارو کنی

$cat="Rp76";
$user=User::with(["Category"=>function($query) use ($cat){
    $query->where("title",$cat);
}])->get();

حالا اگر بخوای کلاس هم اعمال کنی باید اینکارو کنی که تقریبا مثل کار بالا هست
این ۲ تا برای مدل user

public function Category(){
    return $this->hasMany(category::class,"id","category_id");
}
public function Class(){
    return $this->hasMany(class::class,"id","class_id");
}

این هم برای کنترلرت

$cat="Rp76";
$class="programming";
$user=User::with(["Category"=>function($query) use ($cat){
    $query->where("title",$cat);
},"class"=>function($query) user ($class){
    $query->where("title",$class);
}])->get();

من این کد هارو بدون ide زدم امیدوارم درست باشه و کارت رو راه بندازه

کیارش مالکی
کیارش مالکی
@nader.register

تخصص: Backend developer

@hesammousavi
@Rp76
@ali.bayat
@milad
@mhyeganeh

سلام این کدهای منه که در زیر قرار دادم ولی وقتی کد شما رو میزنم همه آیتم ها رو لیست می کنه و داخل اون ارایه ها که برمیگردونه یک آیتمی به نام relations مقدار دهی می شه نصبت به کدی که شما دادید.

من می خوام که همه آیتمها رو نشون نده و اونایی رو نشون بده که شراط براش برقراره. ممنونم. می تونم حتی remote در اختیار بزارم تا محبت کنید و ببینید. تشکر.

مدل Courses

  public function categories()
    {
        return $this->belongsToMany(categories::class, 'category_course', 'course_id', 'category_id');
    }

مدل categories

    public function courses()
    {
        return $this->belongsToMany(Courses::class, 'category_course', 'category_id', 'course_id');
    }

اینم کدی که می خوام لیست کنم.

$db = Courses::where('active', '1')->find(1);

$cat = $this->link['categories'];

$db->with(["categories" => function ($query) use ($cat) {
      $query->whereIn("id", $cat);
}]);
dd($db->get());

توی خروجی همه رو نشون می ده

شاید پاسخ شما همین‌جا باشد

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام