【发布时间】:2018-01-07 21:38:20
【问题描述】:
我正在 Laravel 中构建一个小应用程序,但我需要一些帮助。我读过类似的任务,但我认为它们与我所拥有的无关。
我正在构建的应用程序是一本字典,我真的不明白在 URL 中由 id 显示单词的部分。我尝试恢复凝乳的逻辑(store、update、delete、show),以便它们使用 word name 而不是 word id。那行得通。操作后重定向到路由 app/{name} 也有效。
现在,当凝乳没有对 id 采取行动时,我认为这不是它需要做的?
我也读过关于蛞蝓的文章,但由于我正在构建字典,不明白为什么我需要用 "-" 分隔单词?这是一个词,不像帖子。为什么我需要在表单中为 slug 提供一个额外的字段,因为 slug 必须等于 name?我在这里遇到一个错误:slug->unique() 字段不能为空。
如果有人有时间,请向我解释使 单词名称 显示在 URL 中的最佳方法是什么。谢谢你,我很感激。
编辑
这是我的更新 crud 代码:
public function update(UpdateWordRequest $request, $name)
{
Word::query()->where('name', $name)->firstOrFail()->update($request->input());
return redirect()->route('dictionary.show', ['name' => $name])->with('success', 'Edited successfully!');
}
它工作正常,但是当我重新编辑单词并将其更改为 word2 时,我会收到以下错误:尝试获取非对象的属性“名称”。
我需要做什么?谢谢你:)!
【问题讨论】:
-
如果你所有的“名字”都是唯一的,那么使用名字作为 id 没有任何问题
-
它们确实是独一无二的,但是当我添加例如 word1 和 word2 时,我得到一个错误:尝试获取非对象的属性。
-
没有代码很难分辨 ;)
-
给我们看一些代码
-
稍后我会为您提供我的代码。我正在尝试修复此错误:App\Word::language 必须返回一个关系实例。不知道这里的问题可能出在哪里。几个小时前它确实起作用了。
标签: php laravel-5.5