2016-09-13 4 views
0

Я хочу использовать где положение на другое отношении не моя текущая модель выбора, как показано ниже таблицыкак использовать, где отношения в laravel eloquent?

table Customer 
-------id-----customer_name 

Table ModelA 


table Customer 
-------id-----fk_custome_id 

table ModelB 
-------id-----fk_ModelA_id 

функция в контроллере

$data['data'] = customer::with(['modelA','modelA.modelB']) 
->where('fk_customer_id', 2)->get(); 

Клиент Модель

final function ModalA(){ 
    return $this->hasMany('App\Models\ModelA', 'fk_customer_id', 'id'); 
} 

Modela Модель

final function Modelb(){ 
    return $this->hasMany('App\Models\ModelB', 'fk_modelA_id', 'id'); 
} 

Ошибка: я получил ошибку, как показано ниже, потому что выбрать SQL не найти имя столбца fk_customer_id в таблице клиента, так как я могу fk_customer_id пользователя (в таблице Modela) для где.

ответ

1

Вы можете useYou можно использовать whereHas как:

$data['data'] = customer::with(['modelA','modelA.modelB']) 
    ->whereHas('modelA', function ($query) { 
     $query->where('fk_customer_id', 2); 
    })->get(); 

Это потому, что, когда вы используете с вами просто жаждущим constrints нагрузки, но вы не приложите его к основному запросу (в customer модели). Таким образом, существует два способа: один из них с использованием whereHas или с использованием join запросов.

Смежные вопросы