Laravel 5.3关系returns错了一个
Laravel 5.3 relationship returns wrong one
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', 函数 ($q) 使用 ($company) { $q->where('company_id',$company->id);})->get();
但它 returns 公司,而不是设置。我究竟做错了什么?
谢谢!!
编辑了所有模型,
$companies = Company::with('company_settings')->get();还有returns所有公司
谢谢!
然后要获取您可以执行的设置:
$companies = Company::with('settings')->get();
然后访问第一个公司的设置:
$companies ->first()->company_settings;
从这个returns集合开始,所有的收集方法都对你可用:
https://laravel.com/docs/5.3/collections
要遍历它们,您可以这样做:
$companies->each(function($company) {
$company->company_settings;
// Your logic here
});
您无法在此查询中与 settings
建立关系。 whereHas()
与 has() 的工作原理基本相同,但允许您为要检查的相关模型指定额外的过滤器。
试试这个:
Company::with('company_settings')
->whereHas('company_settings', function ($q) use ($company)
{
$q->where('company_id',$company->id);
})->get();
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', 函数 ($q) 使用 ($company) { $q->where('company_id',$company->id);})->get();
但它 returns 公司,而不是设置。我究竟做错了什么? 谢谢!!
编辑了所有模型, $companies = Company::with('company_settings')->get();还有returns所有公司
谢谢!
然后要获取您可以执行的设置:
$companies = Company::with('settings')->get();
然后访问第一个公司的设置:
$companies ->first()->company_settings;
从这个returns集合开始,所有的收集方法都对你可用:
https://laravel.com/docs/5.3/collections
要遍历它们,您可以这样做:
$companies->each(function($company) {
$company->company_settings;
// Your logic here
});
您无法在此查询中与 settings
建立关系。 whereHas()
与 has() 的工作原理基本相同,但允许您为要检查的相关模型指定额外的过滤器。
试试这个:
Company::with('company_settings')
->whereHas('company_settings', function ($q) use ($company)
{
$q->where('company_id',$company->id);
})->get();