私は反対はあなたが単にクエリはもう少し再利用可能にするために探しているなら、あなたは人のモデルにこれを追加することでローカルスコープ作ることができますがありますかわからない:
/**
* Scope a query to only include persons with given job id.
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeHasJob($query, $jobId)
{
return $query->where('jobs', 'like', "%\"{$jobId}\"%");
}
スコープhasJob
の名前は、親QueryBuilderメソッドhas
を妨害する可能性があります。そのため、別の名前を使用する必要があります。
Person::hasJob($job->id)
を使用できます。ただし、ジョブIDを配列として列に格納するのではなく、ピボット・テーブルを作成して人とジョブの関係をマップすることを検討する必要があります。あなたはこのPHP職人を使用して行うことができます。
php artisan generate:pivot persons jobs
php artisan migrate
を次に、あなたの個人モデルに関係を追加する必要があります。
/**
* The person's jobs
*/
public function jobs()
{
return $this->belongsToMany('App\Job');
}
ですから、このような仕事であなたのPersonモデルを照会することができます:
Person::whereHas('jobs', function ($query) {
return $query->whereId($job->id);
});