Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 5.4:Pulk中相关表格中的concat数据_Laravel_Laravel 5.4 - Fatal编程技术网

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', ''),