Php Laravel:使用where子句多对多关系查询和访问嵌套关系中的子对象
嗨,我有个问题要问我的laravel 模型区域Php Laravel:使用where子句多对多关系查询和访问嵌套关系中的子对象,php,mysql,laravel-5,eloquent,Php,Mysql,Laravel 5,Eloquent,嗨,我有个问题要问我的laravel 模型区域 class Region extends Model { protected $table = 'regions'; protected $guarded = [ ]; public function county() { return $this->belongsTo('App\Models\County'); } public function compan
class Region extends Model
{
protected $table = 'regions';
protected $guarded = [
];
public function county()
{
return $this->belongsTo('App\Models\County');
}
public function companies()
{
return $this->belongsToMany('App\Models\CompanyInfo',
'region_company','region_id','company_id');
}
模型类别
class Category extends Model
{
protected $table = 'categories';
protected $guarded = [];
public function companies()
{
return $this->belongsToMany('App\Models\Company', 'categories_company','category_id','company_id');
}
}
模范公司
class Company extends Model
{
protected $table ='companies';
protected $guarded = [
];
public function regions()
{
return $this->belongsToMany('App\Models\Region', 'region_company','company_id','region_id');
}
}
我有一个输入表单,我想按类别和地区过滤,如果可能的话,输出应该是有公司的类别,但我想每个类别只显示10家公司。我不确定这是否可能
这是我到目前为止所拥有的
$categories = $request->input('categories');
$region = $request->input('regions');
$companies = Category::whereIn('id',$categories)->with([
'companies.regions' => function ($query) use ($region) {
$query->whereIn('id', $region);
}])->get();
这里的问题是,它正在筛选类别,但它仍然让我看到所有公司都没有筛选出属于某个地区的类别
多谢各位
Dany尝试以下方法:
$categories = $request->input('categories');
$region = $request->input('regions');
$companies = Category::whereIn('id',$categories)->with([
'companies' => function ($query) use ($region) {
$query->whereHas('region', function ($q2) use ($region){
$q2->whereIn('id', $region);
});
$query->with(['region']);
$query->limit(10);
}])->whereHas('companies', function($q) use ($region) {
$q->whereHas('region', function ($q2) use ($region){
$q2->whereIn('id', $region);
});
})->get();
您好@clod986谢谢您的快速回复,但我收到一个错误语法错误,意外的“$query”(T_变量)似乎在$q2->where('id',$region);}之后它缺少我尝试过的东西;还有,但还是一样issue@user1859876现在应该在工作了,我忘了关窗户statements@user1859876如果它给你一个“未定义的索引ID”错误,用REGION_ID或REGIONS替换ID。IDI刚刚意识到另外一点,限制(10)只显示10个结果,但不是每个类别的所有类别。它应该显示每个类别最多10家公司,你能提供帮助吗?@user1859876我认为最好的选择是直接从模型开始。检查此链接