class Company extends Model
{
public function company_settings()
{
return $this->belongsToMany('CompanySetting');
}
}
class SettingsGroup extends Model
{
public $table = 'settings_groups';
public function comapanySettings() {
return $this->hasMany('CompanySetting');
}
}
class CompanySetting extends Model
{
public function groups () {
return $this->belongsToMany('SettingsGroups');
}
public function company_settings()
{
return $this->belongsToMany('Company');
}
}
我想获取公司的设置: 公司:: whereHas('company_settings',函数($ q)使用($ company){$ q-> where('company_id',$ company-> id);}) - > get();
但它返回公司,而不是设置。我究竟做错了什么? 谢谢!
所有模特编辑, $ companies = Company :: with('company_settings') - > get();也返回所有公司
谢谢!
答案 0 :(得分:2)
然后获取您可以执行的设置:
$companies = Company::with('settings')->get();
然后访问第一家公司的设置:
$companies ->first()->company_settings;
由于这会返回一个集合,因此您可以使用所有集合方法:
https://laravel.com/docs/5.3/collections
要遍历它们,您可以这样做:
$companies->each(function($company) {
$company->company_settings;
// Your logic here
});
答案 1 :(得分:0)
您无法在此查询中与settings
建立关系。 whereHas()
与has()基本相同,但允许您为要检查的相关模型指定其他过滤器。
试试这个:
Company::with('company_settings')
->whereHas('company_settings', function ($q) use ($company)
{
$q->where('company_id',$company->id);
})->get();