Laravel 5与表格绑定有一个关系

时间:2016-07-28 10:44:12

标签: php laravel-5.2

我花了两天时间做了一件非常简单的小事。我有一个名为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当然不应该在那里,因为这只意味着我可以手动更新此表,而我希望从控制器自动完成所有操作以形成绑定。

1 个答案:

答案 0 :(得分:0)

首先,你做错了关系。

        
  • 用户拥有一个UserNote
  •     
  • UserNote belongsTo User

所以,你要交换那些相应模型的关系。
其次,表单的textarea具有如下参数列表:

public function textarea($name, $value = null, $options = []){}

因此,第一个参数显然是 form_name 。第二个参数将是输入的。你做错了。
在你的情况下,这应该是(我认为)

{{ Form::textarea('user_note', $user->note , [ 'id' => 'user_note', 'class' => 'form-control', 'placeholder' => 'Note Content']) }}

修改
属性 note 是方法名称,您之前写的是 notes ,该方法不存在。 修改结尾
希望这可以帮助。快乐的编码!