کیارش مالکی
3 سال پیش توسط کیارش مالکی مطرح شد
3 پاسخ

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

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

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

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

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


ثبت پرسش جدید
کیارش مالکی
تخصص : Backend developer
@nader.register 3 سال پیش مطرح شد
0

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

        Courses::whereHas("categories" , function ($query) use ($cat) {
            $query->whereIn("id", $cat);
        });

رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 3 سال پیش مطرح شد
1

سلام
برای اینکار رابطه های 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 زدم امیدوارم درست باشه و کارت رو راه بندازه


کیارش مالکی
تخصص : Backend developer
@nader.register 3 سال پیش آپدیت شد
0

@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());

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


کیارش مالکی
تخصص : Backend developer
@nader.register 3 سال پیش مطرح شد
0

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

        Courses::whereHas("categories" , function ($query) use ($cat) {
            $query->whereIn("id", $cat);
        });

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

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