如何从一个模型中打印出两个渴望加载的关系

时间:2019-05-17 11:19:57

标签: php laravel

$spots是来自急切加载的查询的两个多对多关系的结果

 $spots = Spot::where('posted_by','=',$userId)->has('activityCreators')
            ->with('activityCreators','activityTypes')
            ->get();
foreach ($spots['activityCreator'] as $activityCreator) {
    $activityType = $spots['activityType']->map(function($item,$key){
        // return $item->pluck('id') ;  
        return $item->id ;
    })->dump() ;

我要显示的是类似查询的内容:

echo $activityCreator->pivot->display_name ." made an {$activityType->activity_type}  on Spot Id  " .$activityCreator->pivot->spot_id."<br/>" ; 

2 个答案:

答案 0 :(得分:0)

如果我正确理解了您想要的内容,则可以向Spot模型添加属性。

Spot.php

protected $appends = [
    'message'
];


public function getMessageAttribute()
{   
    //Assign the string value that you want to see
    $message = "Value";

    return $message;
}

您可以像这样为每个竞价对象访问此消息属性。

$spot->message;

答案 1 :(得分:0)

我认为对我而言,更简单的方法是使用多态关系,而不是使用具有3列的数据透视表。