枢轴列在模型Laravel中隐藏

时间:2019-03-20 13:48:02

标签: php laravel

我的Post模型具有以下关系:

public function prices() {
    return $this->morphedByMany('App\Price', 'postable');
}

我有一个单独的带有栏的表postables:

- postable_id
- postable_type
- custom (type: json)

为什么当我想做的事情:$post->pivot->custom我得到空值,为什么?当我执行dd($post)时,在集合中找不到列custom

1 个答案:

答案 0 :(得分:2)

定义关系时必须指定自定义属性,如下所示:

public function prices() {
    return $this->morphedByMany('App\Price', 'postable')->withPivot('custom');
}

如果要转换自定义属性,则必须为数据透视表创建一个模型,如下所示:

use Illuminate\Database\Eloquent\Relations\Pivot;

class Postable extends Pivot
{
    protected $casts = [
        'custom' => 'array',
    ];
}

在您的关系定义中引用此模型:

return $this->morphedByMany('App\Price', 'postable')
    ->using('App\Postable')
    ->withPivot('custom');

现在您可以像这样检索值:

foreach ($post->prices as $price) {
    echo $price->pivot->custom;
}