2016-08-11 5 views
0

как вернуть коллекцию выразительных моделей с колонкой поворота? Например, существуют отношения M: N между пользователями и чанами. Я хочу получить все данные пользователей (с чанами и с опорным столбцом (costOfDelivery), который находится в сводной таблице user_vat).получение сводных столбцов в коллекции в Laravel

В моем коде у меня есть:

$vats = Vat::whereHas('users', function($query) use ($user) { 
       $query->where('user_id', $user->id); 
    })->with('country') 
      ->get(); 

но это возвращает данные из чанов и страны, а не из сводной таблицы «user_vat», как извлечь и costOfDelivery?

+0

Как вы извлекаете данные из сводной таблицы – jonju

+0

Я отредактировал мой ответ, я только возвращаю json с данными – Matej

+0

Вы используете -> withPivot ('costOfDelivery'); в вашем методе отношений? –

ответ

1

Чтобы извлечь данные из сводной таблицы, вы должны использовать атрибут поворота

Нечто подобное

foreach($users->roles as $role){ 
    echo $role->pivot->created_at; 
} 

Чтобы вернуть JSON, вы можете использовать метод toJson() как

$vat->toJson(); 
+0

Я поменял свое сообщение, пожалуйста, проверил его ... Мне нужно вернуть json с данными, а не писать на вывод эхом ... – Matej

+0

спасибо, это работает. Однако как выбрать только указанный столбец из связанной таблицы? Например, когда я хочу выбрать название страны для соответствующего банка. Я хочу сделать что-то вроде этого: ..-> select ('rate', 'country.name'), где «rate» находится в таблице vat и «name» из страны. Как это сделать правильно? – Matej

0
<?php 

/** 
* The model class with the belongsToMany user class relation. 
*/ 
class Vat extends Model 
{ 
    public function user() 
    { 
     return $this->belongsToMany(\App\User::class) 
      ->withPivot(['cost_of_delivery', /**Specific columns for the pivot.*/]); 
    } 

} 

<?php 

/* 
* Your query (which I think is a little bit complicated that it should be. 
*/ 
$vats = Vat::whereHas('users', function($query) use ($user) { 
      $query->where('user_id', $user->id); 
})->with(['country', 'users']) 
     ->get(); 

Я бы использовал sth. как:

<?php 
$user->load(['vats.country']); 
$vats = $user->getRelationValue('vats'); 

И

$vats->first()->pivot->cost_of_delivery 

должно дать вам стоимость доставки первого чана.

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