2015-09-30 2 views
0

Как wherePivot() фактически работает внутри laravel 5?Как wherePivot() фактически работает внутри laravel 5?

Для примера я практиковал, наблюдая учебник и учитель использовал wherePivot() для толкуя отношений:

public function friendsOfMine(){ 

    return $this->belongsToMany('Chatty\Models\User','friends','user_id','friend_id'); 
} 

public function friendOf(){ 

    return $this->belongsToMany('Chatty\Models\User','friends','friend_id','user_id'); 

} 

public function friends(){ 

    return $this->friendsOfMine()->wherePivot('accepted',true)->get()->merge($this->friendOf()->wherePivot('accepted',true)->get()); 

} 
+0

Вы проверяли [исходный код] (https://github.com/laravel/framework/blob/2dc84427005c9525426169476e8965bcfc7fd9bb/src/Illuminate/Database/Eloquent/Relations/BelongsToMany.php#L111)? – sebdesign

+0

Метод 'wherePivot()' позволяет вам ограничить столбец (т. Е. «Принят») в сводной таблице (т. Е. «Друзья»), тем самым выбирая только те чужие записи, которые соответствуют условию. –

ответ

2

Спасибо ребята .. но я думаю, что я нашел свой ответ

A сводная таблица представляет собой таблицу базы данных, которая существует только для обслуживания отношений «многие ко многим». Скажем, у вас есть стол «клиент» и стол «напитки». Если вы хотите узнать, какой заказчик заказал напиток, вам нужно создать сводную таблицу customer_drinks (customer_id, drink_id).

Определение сводной таблицы

class Customer extends \Eloquent {  
    public function drinks() 
    { 
     return $this->belongsToMany('Drink', 'customer_drinks', 'customer_id', 'drink_id'); 
    } 
} 

Создать запись

$customer = Customer::find($customer_id); 
$customer->drinks()->attach($drink_id); //this executes the insert-query 

Удалить запись из сводной таблицы

$customer = Customer::find($customer_id); 
$customer->drinks()->detach($drink_id); //this executes the delete-query on the pivot table 
Смежные вопросы