【问题标题】:Laravel 5 Has One Relationship with Form BindingLaravel 5 与表单绑定有一种关系
【发布时间】:2016-07-28 10:44:12
【问题描述】:

我花了两天时间做一件如此简单和小事。我有一个名为 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 首先不应该存在,因为这仅意味着我可以手动更新此表,而我希望从控制器自动完成所有操作以进行表单绑定。

【问题讨论】:

  • 你遇到了什么错误?
  • 请用您的模型更新您的问题
  • @Vuldo 我这样做了先生,提前谢谢。
  • @jaysingkar 我现在不再收到错误,文本用双引号括起来我不知道为什么。
  • 你的问题解决了吗?

标签: php laravel-5.2


【解决方案1】:

首先,你搞错了关系。

  • 用户有一个用户注释
  • UserNote 属于用户

因此,您必须交换那些相应模型上的关系。
其次,表单的 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,方法不存在。 编辑结束
希望这可以帮助。编码愉快!

【讨论】:

  • 谢谢您,先生,@ssl-anik,我一定会尝试一下并回复您。
  • 是的,我一定会这样做的。
猜你喜欢
  • 2014-12-06
  • 2014-12-31
  • 2016-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多