Laravel - 选择具有多对多关系的记录,为每个关系附加额外的字段

时间:2017-07-01 17:43:04

标签: laravel

我需要为每个关系添加字段,例如$ record-> lists(),并且对于每个列表我需要添加额外字段 - 我想知道是否有办法通过使用一些闭包魔术来实现它,或者如果我应该预先安排阵列。

修改

当前解决方案

    $relatedLists = $item->lists()->with([
        'user' => function($query){ $query->select('nickname', 'id');}
    ])->get();

    foreach( $relatedLists as $index => $list) {
        $rating = $item->ratingsByUserId($list->user_id)->first();
        $relatedLists[$index]->rated_by_user = empty($rating) ? 0 : $rating->rated;
    }

2 个答案:

答案 0 :(得分:0)

对于多对多关系,您可以使用attach()方法并传递数据透视表中定义的其他值数组

$record->lists()->attach([
    1 => ['extrafield' => 'extravalue1'],
    2 => ['extrafield' => 'extravalue2'],
]);

上面的代码将带有ID 12的列表附加到记录中,并相应地将字段值设置为'extravalue1''extravalue2'

进一步阅读Many To Many Relationships

答案 1 :(得分:0)

您可以使用from zlib import compress, decompress from base64 import b64encode DATA_comp = compress(DATA.encode()) DATA_enc = b64encode(DATA_comp) cmd = b'\x02' + DATA_enc + b'\x03' 变量在模型中添加额外属性(不在表中作为字段)。您还可以为这些附加属性创建变换器。

实施例

appends