Laravel 5与形式绑定有一个关系


Laravel 5 Has One Relationship with Form Binding

我花了相当好的两天时间在这么简单和小的事情上。我有一个名为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一样编写,该方法不存在。编辑结束
希望这能有所帮助。编码快乐!