我有3个表,第一个是'事件'表,其中包含列:
id
showname
eventdate
office_id //the office that made this
photo
user_id //the user that saved the record
...
和其他一些专栏。
office_id是下面办公室的外键
第二个是'办事处'表
id
name
address
owner_id //the user owner of Office
...
和其他一些专栏。
owner_id是以下用户中的外键
,第三个是'用户'表
id
name
...
和其他一些专栏。
现在我正在尝试索引视图文件来显示事件。
我使用事件模型中的范围来显示属于signed_in用户的事件。
public function scopeHasMyOffice($query, $me)
{
return $query->join('offices', function ($join) use ($me) {
$join->on('events.foffice_id', '=', 'offices.id')
->where('owner_id', $me);
});
}
在控制器中,我编写了这段代码
public function myindex()
{
$my = Auth::User()->id;
if (!is_null($my))
{
$events = Event::HasMyOffice($my)->select('events.*')
->orderby('eventdate', 'desc')
->get();
}
else
{
$events = NULL;
}
}
可行并提供其所有者为用户连接的事件列表。
我还有另外两个列表显示州和城市的所有事件。
现在我想在每一行前面显示一个简单的“查看”按钮和一个按钮“编辑”,如果该事件属于所有者是用户登录的办公室 只有该用户可以选择编辑记录。
这是为每个办公室的一个用户(一个所有者)构建的。如果他们更多,我必须再次改变它。
无论如何,我现在想要编辑按钮,但仅针对用户所有者,正如我所解释的那样,需要一些帮助。
我认为添加到模型事件这个代码
是一个好主意public function scopeInMyOffice($query, $me, $gid)
{
return $query->join('offices', function ($join) use ($me) {
$join->on('events.foffice_id', '=', 'office.id')
->where('owner_id', $me);
})->where('event.id', $gid);
}
检查每一行是否发生但是没有用。
@if( count($event->InMyOffice(Auth::user()->id, $event->id)) > 0)
<a href="{{ route('event.edit', [$event->id]) }}" class="btn btn-xs btn-info">Edit</a>
@endif
所以我被困住了,需要一些帮助。