我正在为广播新闻广播开发一个分配系统。试图返回特定新闻广播的所有作业的视图,但我遇到了困难。
表
用户表
id | name
---|-------
1 | Admin
2 | Susan
3 | Ed
4 | Jen
新闻广播表
id | forStation_id | name
---|---------------|-----
1 | 1 | AM
2 | 1 | PM
3 | 2 | Sports
车站表
id | calls
---| -----
1 | JNDV
2 | YXWQ
分配表
id | anchorId | newscastId | startDate | endDate | isTemp
---|----------|------------|-------------|-------------|--------
1 | 2 | 1 | 01 May 2017 | 31 Dec 2999 |
2 | 3 | 1 | 02 May 2017 | 06 May 2017 | True
3 | 4 | 2 | 01 Apr 2017 | 31 Dec 2999 |
4 | 3 | 3 | 01 Apr 2017 | 28 Apr 2017 |
(部分)分配模型
public function anchor()
{
return $this->belongsTo(User::class, 'anchor_id')->withTrashed();
}
public function cast()
{
return $this->belongsTo(Newscast::class, 'cast_id')->withTrashed();
}
(部分)新闻广播模型
public function for_station()
{
return $this->belongsTo(Station::class, 'for_station_id')->withTrashed();
}
function getNameInputStationAttribute() {
return $this->for_station->calls . "-" . $this->name_input;
}
(部分)分配控制器
/**
* Display all Assignments for one input name.
*
* @param int $name
* @return \Illuminate\Http\Response
*/
public function showAssignmentsByCastName($castName)
{
if (! Gate::allows('assignment_view')) {
return abort(403);
}
$relations = [
'anchors' => \App\User::get()->pluck('name', 'id'),
'casts' => \App\Newscast::with('for_station')->get()->pluck('name_input_station', 'id'),
'assignments' => \App\Assignment::with('cast')->get(),
];
dump($relations);
return view('assign.list', compact('castName') +$relations);
}
正如我所料,这段代码返回完整的assignments
.
输出
Anchor | Cast Name | Start Date | End Date
---------|-------------|-------------|-------------
Susan | JNDV-AM | 01 May 2017 | 31 Dec 2999
Ed | JNDV-AM | 02 May 2017 | 06 May 2017
Jen | JNDV-PM | 01 Apr 2017 | 31 Dec 2999
Ed | YXWQ-Sports | 01 Apr 2017 | 28 Apr 2017
我已经尝试了几种方法来将分配限制为只有一个newscastId
,到目前为止没有成功。
2017 年 5 月 1 日/assignment/list/JNDV-AM的期望输出
Anchor | Cast Name | Start Date | End Date
---------|-------------|-------------|-------------
Susan | JNDV-AM | 01 May 2017 | 31 Dec 2999
Ed | JNDV-AM | 02 May 2017 | 06 May 2017
短期任务是临时任务(isTemp=True)。在它有效的日子里,它应该列在最前面。
2017 年 5 月 2 日至 2017 年 5 月 6 日/assignment/list/JNDV-AM的所需输出
Anchor | Cast Name | Start Date | End Date
---------|-------------|-------------|-------------
Ed | JNDV-AM | 02 May 2017 | 06 May 2017
Susan | JNDV-AM | 01 May 2017 | 31 Dec 2999
我正在修改管理面板生成器工具生成的代码。在我看来,查询所有用户和所有演员并不是最有效的方法。我认为,由于我只为一个新闻广播寻找当前和未来的分配,应该过滤anchors
and关系。casts
基本问题
我应该进行哪些更改
'assignments' => \App\Assignment::with('cast')->get(),
才能仅获取 JNDV-AM (newscastId = 1) 的分配?
高级问题
您如何建议更改relations
为仅返回 JNDV-AM 的当前和未来分配,首先是今天的分配,尽可能少的查询?