Laravel 5一对多关系问题

时间:2015-06-08 08:50:36

标签: php mysql laravel

我有一个company表和一个attributes表,其中包含各种值。

一家公司hasMany属性和一个属性belongsTo公司。

现在,我在属性表中有一个值,其中包含' account_nr_start' (例如,当新用户被添加到公司时,其account_id从1000开始计算)

属性表:
attributes table

型号:

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: [] }

虽然需要显示

enter image description here

我做错了什么?

1 个答案:

答案 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();