我花了相当好的两天时间在这么简单和小的事情上。我有一个名为User的模型,它有一个用户注释关系。
在用户模型方面,我定义了belongsTo关系,然后用户模型定义了hasOne关系。
我使用的表单绑定到$user
模型,同时UserNote模型有自己的表,该表映射到具有user_id的用户。
我一直在努力使下面显示的内容正确;
{{ Form::textarea($user->notes, null , [ 'class' => 'form-control', 'placeholder' => 'Note Content']) }}
有人帮我搞清楚吗?b我所需要的只是能够添加一个注释,如果用户还没有注释,我就不会出错,因为如果我按照下面所示的方式操作,我就会出错:
{{ Form::textarea('UserNote[content]',... }}
非常感谢你的建议。
class User{
...
public function note()
{
return $this->belongsTo(UserNote::class);
}
}
class UserNote{
protected $fillable = ['content', 'user_id'];
...
public function user()
{
return $this->hasOne(User::class, 'user_id');
}
}
当然,$fillable
中的user_id一开始就不应该存在,因为这只意味着我可以手动更新这个表,而我希望从控制器到表单绑定的所有操作都能自动完成。
首先,你把关系搞错了。
- 用户有一个UserNote
- 用户备注属于用户
所以,你必须交换那些相应模型上的关系。
其次,表单的文本区域具有如下参数列表:
public function textarea($name, $value = null, $options = []){}
因此,第一个参数显然是form_name。第二个参数将是输入的值。你做错了。
在你的情况下,应该是(正如我所认为的)
{{ Form::textarea('user_note', $user->note , [ 'id' => 'user_note', 'class' => 'form-control', 'placeholder' => 'Note Content']) }}
编辑
属性notes是方法名称,您以前像notes一样编写,该方法不存在。编辑结束
希望这能有所帮助。编码快乐!