我试图创建一个读取www.localhost / forum / {slug} / thread = {id}的网址,但我遇到了问题。 {id}部分将返回,因为这是线程ID,但{slug}部分我试图通过foriegn密钥检索并获得问题。
Call to a member function forums() on null
这是我的表格 论坛:id,name,slug,timestamps 主题:id,name,forum_id,user_id
这是我在线程模型上的关系
public function forums(){
return $this->belongsTo('App\Forum');
}
这是我在ThreadController上的代码
public function show($id, $slug)
{
//
$thread = Thread::find($id);
$thread->forums()->slug = $slug;
return view('forum.thread')->withThread($thread);
}
关于我如何将论坛的重点放入网址的任何想法?
答案 0 :(得分:0)
因为$thread = Thread::find($id)
没有得到任何线程。您可以使用findOrFiail
函数,或检查是否存在线程,然后调用forums()
。
答案 1 :(得分:0)
也许试试$thread->forums()->setAttribute('slug', $slug)
答案 2 :(得分:0)
所以看起来id
不是路由参数。
你的控制器方法应该是
public function show($slug)
{
$thread = Thread::find(request()->input('id'));
$thread->forums()->slug = $slug;
return view('forum.thread')->withThread($thread);
}
要么改变你的路线