2015-05-20 13 views
5

Я знаю, что вы можете скрыть всю сводную таблицу в качестве такогоСкрытие атрибут поворота

protected $hidden = ['pivot']; 

Как вы скрыть определенную область в пределах сводной таблицы, как

protected $hidden = ['pivot.created_at']; 

выше не работает от того, что Я протестировал

+0

попробуйте '$ this-> addHidden ($ attributes);' Можете ли вы предоставить вывод модели, чтобы мы могли видеть, как вы получаете различные атрибуты. – vps

+0

Вы используете 'withPivot()' в своих методах отношений, чтобы возвращать только те столбцы, которые вы хотите? – user3158900

+0

В настоящее время у меня есть 'public function orders() { return $ this-> принадлежит ToMany ('App \ Models \ Order', 'payments_to_orders', 'payment_id', 'order_id') -> withPivot ('amount') -> withTimestamps(); } 'и при выполнении' $ payment-> load (['orders', 'method']) 'Я возвращаюсь' "pivot": { "payment_id": "1", "order_id": "7 ", " amount ":" 60,00 ", " created_at ":" -0001-11-30 00:00:00 ", " updated_at ":" -0001-11-30 00:00:00 " } 'Я хочу скрыть' created_at' и 'updated_at' – MonOve

ответ

3

После стольких попыток и поиска в source of Laravel Model, я наконец добился этого.

Приложите к вашей модели следующий метод.

/** 
* Convert the model instance to an array. 
* 
* @return array 
*/ 
public function toArray() 
{ 
    $attributes = $this->attributesToArray(); 
    $attributes = array_merge($attributes, $this->relationsToArray()); 
    unset($attributes['pivot']['created_at']); 
    return $attributes; 
} 

Это решает задачу.

+0

это работает, но далеко от того, что я хотел бы, чтобы Laravel сделал – MonOve

+0

Согласитесь ... это работает, но это ужасно. Придется использовать его, поскольку нет элегантного способа достижения такого же результата. – dmmd