[英]Laravel 6.2: Laravel "with" not working with condition
我正在 Laravel 6.2 中開發一個項目。 我有兩個模型。
我想要做的是讓所有的工作,其中職位相匹配something
和company city
等於something
。 問題是,它得到了公司的所有工作,但如果我指定了錯誤的company city
,它仍然會得到記錄。 總之里面的條件with
不工作。 到目前為止我所做的:
模型 > Job.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Job extends Model
{
// user
public function user()
{
return $this->belongsTo('App\User');
}
// company
public function company()
{
return $this->belongsTo('App\Company');
}
}
模型 > Company.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Company extends Model
{
// user
public function user()
{
return $this->belongsTo('App\User');
}
// job
public function job()
{
return $this->hasMany('App\Job');
}
}
JobController > 搜索
public function search(Request $request)
{
$jobs = Job::where('title', 'like', '%' . $request->q . '%')
->with(['company' => function($q) use ($request) {
$q->where('city', $request->city);
}])
->get();
return view('jobs.view')->withJobs($jobs);
}
試試下面的功能:
public function search(Request $request)
{
$jobs = Job::where('title', 'like', '%' . $request->q . '%')
->with(['company'])
->whereHas('company',function($q) use ($request) {
$q->where('city', $request->city);
})
->get();
return view('jobs.view')->withJobs($jobs);
}
在您的控制器中!
public function search(Request $request)
{
$jobs = Job::where('title', 'like', '%' . $request->q . '%')
->with(['company' => function($q) use ($request) {
$q->where('city', $request->city)->get();
}])
->get();
return view('jobs.view')->withJobs($jobs);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.