我有一个company
表和一个attributes
表,其中包含各种值。
一家公司hasMany
属性和一个属性belongsTo
公司。
现在,我在属性表中有一个值,其中包含' account_nr_start' (例如,当新用户被添加到公司时,其account_id从1000开始计算)
属性表:
型号:
class Attribute extends Model
{
protected $table = 'attributes';
protected $fillable = ['attribute', 'value'];
public function user() {
return $this->belongsTo('App\User');
}
public function company() {
return $this->belongsTo('App\Company');
}
}
class Company extends Eloquent {
protected $table = 'companies';
public function users()
{
return $this->hasMany('App\User', 'id');
}
public function attributes()
{
return $this->hasMany('App\Attribute');
}
}
控制器:
public function edit(Company $company, CompaniesController $companies)
{
$companies = $companies->getCompaniesName(Auth::user()->company_id);
$account_nr_start = $this->company->attributes()
->where('attribute', '=', 'account_nr_start')
->get();
dd($account_nr_start);
return view('company.edit', ['company' => $company, 'id' => 'edit','companies' => $companies]);
}
如果我dd($account_nr_start)
我将收到空集Collection {#318 ▼ #items: [] }
虽然需要显示
我做错了什么?
答案 0 :(得分:0)
希望以下内容有效。请参阅编辑。
Company::with(['attributes' => function($query) {
$query->where('attribute', '=', 'account_nr_start');
}])->findOrFail(Auth::user()->company_id);
编辑:我之前误解了这个问题。你想要属性。请尝试以下方法。
Attribute::whereHas('company', function($query)
{
$query->where('id', '=', Auth::user()->company_id);
})->where('attribute', '=', 'account_nr_start')->get();