首页 文章

Laravel 5.3关系返回错误

提问于
浏览
0
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 回答

  • 0

    然后,您可以执行以下设置:

    $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
    });
    
  • 2

    您无法在此查询中与 settings Build 关系 . whereHas() 与has()的工作原理基本相同,但允许您为要检查的相关模型指定其他过滤器 .

    试试这个:

    Company::with('company_settings')
            ->whereHas('company_settings', function ($q) use ($company)
            {
                  $q->where('company_id',$company->id);
            })->get();
    

相关问题