Laravel 5.4:Pulk中相关表格中的concat数据
我正在为广播新闻节目写一个作业系统。数据表:Laravel 5.4:Pulk中相关表格中的concat数据,laravel,laravel-5.4,Laravel,Laravel 5.4,我正在为广播新闻节目写一个作业系统。数据表: station id | calls ---| ----- 1 | cxri newscast id | name_input | for_station_id ---|------------|--------------- 1 | am | 1 assignment id | newscast_id | user_id 1 | 1 | 5 Assignment.edit的控制器如下所示: if
station
id | calls
---| -----
1 | cxri
newscast
id | name_input | for_station_id
---|------------|---------------
1 | am | 1
assignment
id | newscast_id | user_id
1 | 1 | 5
Assignment.edit的控制器如下所示:
if (! Gate::allows('assignment_edit'))
return abort(401);
}
$relations = [
'anchors' => \App\User::get()->pluck('name', 'id')->prepend('Please select', ''),
'casts' => \App\Newscast::get()->pluck('name_input', 'id')->prepend('Please select', ''),
];
return view('assignment.create', $relations);
新闻广播模式:
public function for_station()
{
return $this->belongsTo(Station::class, 'for_station_id')->withTrashed();
}
现在我明白了
"casts" => Collection {#451 ▼
#items: array:2 [▼
"" => "Please select"
1 => "am"
]
}
我想要
"casts" => Collection {#451 ▼
#items: array:2 [▼
"" => "Please select"
1 => "cxri-am"
]
}
我如何做到这一点
或者我应该将数据反规范化,并将name_输入为“cxri am”而不是“am”
我所尝试的:中的公认答案 错误
Call to undefined relationship [station] on model [App\Newscast]
根据中的讨论,我加入了上面的新闻广播模型。基于这一讨论,我认为新闻广播应该已经能够访问电台电话。但如上所示,调用不是以$cast形式进行的。您已接近您所尝试的内容。
with()
函数需要关系函数的名称,而不是表的名称,因此这应该可以用于加载关系模型:
'casts' => \App\Newscast::with('for_station')->get(),
至于以您想要的方式将数据发送到concat,我将在新闻广播
模型上制作一个示例,它将返回您想要的数据:
function getNameInputStationAttribute() {
return $this->for_station->calls . "-" . $this->input_name;
}
然后,您将使用以下方法:
'casts' => \App\Newscast::with('for_station')->get()->pluck('name_input_station', 'id')->prepend('Please select', ''),
如果我可以指出一些其他的事情,
401
的返回码表示未经验证
,而403
表示未经授权
,这更适用于门
返回false。另外,类函数应该是cammel case,所以你的for_station
函数应该是for station
或者甚至只是station
谢谢你,@JRLambert!这工作做得很好。我还将做一些你提到的其他改变,并感谢你的指点!
'casts' => \App\Newscast::with('for_station')->get()->pluck('name_input_station', 'id')->prepend('Please select', ''),