Как добавить условие в таблицу таблиц, а не в таблицу отношений, при определении отношения модели - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть таблица отношений с именем company_team it, относящаяся к company и user, и в таблице company_team есть поле is_ceo, чтобы указать, является ли член команды компании главным исполнительным директором. ниже моя модель определить

class CompanyTeam extends Pivot
{
    /**
     * return all company team member with out ceo
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function team_member()
    {
        return $this->belongsTo(User::class, 'user_id');
    }

    /**
     * return only ceo's info
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function company_ceo()
    {
        $this->where('is_ceo', 1); // it dosen't work, but it is effect l want
        return $this->belongsTo(User::class, 'user_id');
    }
}

Я искал ответ с использованием addGlobalScope, но он мне не подходит, потому что когда я использую оба отношения team_member и company_ceo, это добавит условие к обоим из

Ответы [ 3 ]

0 голосов
/ 01 апреля 2019
public function company_ceo()
{
    return $this->belongsTo(User::class, 'user_id')->where('is_ceo', 1);
}

Надеюсь, это поможет. Хорошего дня и удачного кодирования ...:)

0 голосов
/ 01 апреля 2019

В пользовательской модели вы можете определить область действия

public function scopeCompanyCeo($query){
return $query->where('is_ceo',1);
}

тогда вы можете использовать как в вашем контроллере

$user = User::find(1)->companyCeo()->get();
0 голосов
/ 01 апреля 2019

Вы не можете добавлять условия при определении отношений. Вы должны добавить условие при выполнении запросов.

CompanyTeam::with(['company_ceo' => function ($q) use() { $q->where('is_ceo', 1); }]) ->get();

...