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');
}
}
我想得到公司的设置:Company :: whereHas('company_settings',function($ q)use($ company){$ q-> where('company_id',$ company-> id);}) - > get ();
但它返回公司,而不是设置 . 我究竟做错了什么?谢谢!!
所有模型编辑,$ companies = Company :: with('company_settings') - > get();也回报所有的公司
谢谢!
2 回答
然后,您可以执行以下设置:
然后访问第一家公司的设置:
由于这会返回一个集合,因此您可以使用所有集合方法:
https://laravel.com/docs/5.3/collections
要遍历它们,您可以执行以下操作:
您无法在此查询中与
settings
Build 关系 .whereHas()
与has()的工作原理基本相同,但允许您为要检查的相关模型指定其他过滤器 .试试这个: