۴۰۴ Not Found! قیمت ها به ۴۰۳ برگشت! به مدت محدود!
بزن بریم!سلام دوستان.
من به دلایلی اطلاعات کاربر رو داخل یه جدول جدا به اسم profiles ذخیره کردم.
من سه تا جدول دارم:
جدول users
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('role')->default('user');
$table->string('email')->unique();
$table->string('password');
$table->timestamps();
});
جدول profiles
Schema::create('profiles', function (Blueprint $table) {
$table->id();
$table->foreignId('user_id')->constrained()->onUpdate('CASCADE')->onDelete('CASCADE');
$table->string('fullName');
$table->string('phone');
$table->timestamps();
});
جدول jobs
Schema::create('jobs', function (Blueprint $table) {
$table->id();
$table->foreignId('user_id')->constrained()->onUpdate('CASCADE')->onDelete('CASCADE');
$table->string('slug');
$table->string('title');
$table->string('category_name');
$table->string('history');
$table->string('state');
$table->string('city');
$table->longText('description');
$table->boolean('approved')->default(0);
$table->timestamps();
});
حالا زمانی که میخوام بین شغل های تایید شده جستجو رو بر اساس عنوان شغل که داخل جدول jobs و اسم کاربر که داخل جدول profiles است انجام بدم به ارور زیر بر میخورم:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'jobs.profile_id' in 'where clause' (SQL: select count(*) as aggregate from `jobs` where `title` LIKE %آرمین رحمتی% or exists (select * from `profiles` where `jobs`.`profile_id` = `profiles`.`id` and `fullName` LIKE %آرمین رحمتی% and `approved` = 2) and `approved` = 2)
کدی که نوشتم هم به صورت زیر هست.
public function approved() {
$jobs = Job::query()
->when($keyword = request('search'), function ($query) use ($keyword) {
$query->where('title', 'LIKE', "%{$keyword}%")
->orWhereHas('profile', function ($query) use ($keyword) {
$query->where('fullName', 'LIKE', "%{$keyword}%")
->where('approved', 2);
});
});
$jobs = $jobs->where('approved', 2)->latest()->paginate(10);
return view('panel.jobs.approved', compact('jobs'));
}
با سلام و وقت بخیر دوست گرامی
همونطور که پیغام ارورتون می گه ستون profile_id در جدول jobs وجود نداره
شما برای رفع این مشکلتون می تونید
1.یک ریلشن بنویسید و کالکشنتون رو فیلتر کنید که این روش کندتریه
@fakhraddin
الان کدمو به صورت زیر نوشتم ولی هچنان همون ارور رو میده.
public function approved() {
$jobs = Job::query()
->join('profiles', 'jobs.id', '=', 'profiles.user_id')
->when($keyword = request('search'), function ($query) use ($keyword) {
$query->where('title', 'LIKE', "%{$keyword}%")
->orWhereHas('profile', function ($query) use ($keyword) {
$query->where('fullName', 'LIKE', "%{$keyword}%")
->where('approved', 2);
});
});
$jobs = $jobs->where('approved', 2)->latest()->paginate(10);
return view('panel.jobs.approved', compact('jobs'));
}
با سلام و وقت بخیر
من چندتا نکته در مورد کوئری که زدید بدم و بعد براتون یک کوئری با منطق بهتر خدمتتون ارائه می دم
$jobs = Job::leftJoin('profiles', function($join) {
$join->on('jobs.user_id', '=', 'profiles.user_id');
})->where('jobs.approved', 1)->whereRaw('jobs.title LIKE ?', '%'.$keyword.'%')->
whereRaw('profiles.fullName LIKE ?', '%'.$keyword.'%')->latest->
get(['jobs.id', 'jobs.title', 'profiles.fullName']);
امیدوارم توضیحاتم هر چند طولانیه کمک کنه به شما و اگه بازم نیاز به راهنمایی داشتید خوشحال می شم کمکی بکنم
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟