@ali.bayat @hossein.r.1442 @hesammousavi @milad @elyasbeshkani @juza66 @rezajashnsaz0011 @endworld @mohsenbostan @alireza.mzh @bahrami.nasrin90 و بقیه دوستان ..
سلام به همه دوستان
ببینید دوستان من بین post ها و category ها رابطه چند به چند ایجاد کردم.
حالا اگر در هنگام سرچ ، بخوام همه پست هایی که حداقل دسته ای مشخصی دارند رو از دیتابیس بگیر از چه دستوری می تونم استفاده کنم.
کار برام یخورده سخت شده چون ، هر پست ممکنه چندین دسته داشته باشه و در عین حال ما میخوایم پست هایی رو بگیریم که حداقل ، دسته ای رو که مشخص میکنیم داشته باشن.
مثلا فرض کنید کاربر دسته لاراول رو انتخاب میکنه ، باید پست هایی که حداقل دسته لاراول رو دارند رو بهش نشون بدیم.
ممنون میشم راهنمایی بفرمایید
بله
کد زیر رو امتحان کنید
Post::whereHas('categories', function (Builder $query) {
$query->whereIn('name', ['laravel','php']);
})
->whereTitle('some title')
->whereType('some type')
// ->Where Other Conditions
->paginate(10);
سلام
میتونید از قطعه کد زیر استفاده کنید:
Category::where('name','laravel')->firstOrFail()->posts
آیا دقیقا نمیشه روی خود مدل post ، شرط رو قرار بدیم.
چون میخوام برای سرچ استفاده کنم و شروط دیگه ای هم هستن .
و تمامی شروط روی مدل post قرار گرفتن.
فرض کنید این کد ماست :
Post::whereApproved(2)
->when(\request()->get('type') , function ($q) {
if (\request()->get('type') == 'like'){
$q->orderBy('like_view','desc');
}
})
->when(\request()->get('catId') , function ($q) {
// درخواست کاربر برای دریافت پست هایی که حداقل دسته (فلان) را داشته باشن
})->paginate(10);
بله
کد زیر رو امتحان کنید
Post::whereHas('categories', function (Builder $query) {
$query->whereIn('name', ['laravel','php']);
})
->whereTitle('some title')
->whereType('some type')
// ->Where Other Conditions
->paginate(10);
@amin.mokhtari94
ممنون از پاسختون
من نمونه کد زیر رو اجرا کردم و با ارور برخورد کردم :
Post::whereApproved(2)
->when(\request()->get('type') , function ($q) {
if (\request()->get('type') == 'new'){
$q->orderBy('created_at','desc');
}elseif (\request()->get('type') == 'old'){
$q->orderBy('created_at','asc');
}
})
->when(\request()->get('catId') , function ($q) {
$q->whereHas('category', function (Builder $query){
$query->whereId(request()->get('catId'));
});
})
->paginate(10);
نام تابع ralation من در مدل پست category هست برای همین، category نوشتم.
و باید بگم کاربر فقط id یک دسته را میفرستد.
ارور :
Argument 1 passed to App\Http\Controllers\Pages\PostsController::App\Http\Controllers\Pages\{closure}() must be an instance of Illuminate\Database\Query\Builder, instance of Illuminate\Database\Eloquent\Builder given, called in
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟