Php 在Laravel 4中使用BelongsTo映射时插入数据
我正在尝试在我的Laravel 4应用程序中实现Php 在Laravel 4中使用BelongsTo映射时插入数据,php,laravel,laravel-4,eloquent,Php,Laravel,Laravel 4,Eloquent,我正在尝试在我的Laravel 4应用程序中实现belongsTo映射。但我似乎无法让它工作 我有一个db表,名为:问题: question_id | question_title | question_details| ask_by_id | created_at| updated_at 此处ask\u by\u id是用户表的外键 我面临的问题是,当我向表中插入数据时,除了ask\u by\u id列之外,所有列值都被正确插入。如果我没有错,因为我正在使用belongTo映射,那么La
belongsTo
映射。但我似乎无法让它工作
我有一个db表,名为:问题:
question_id | question_title | question_details| ask_by_id | created_at| updated_at
此处ask\u by\u id
是用户
表的外键
我面临的问题是,当我向表中插入数据时,除了ask\u by\u id
列之外,所有列值都被正确插入。如果我没有错,因为我正在使用belongTo
映射,那么Laravel应该会自动为我在ask\u by\u id
列中插入当前用户的id
值。但是它没有发生,你能告诉我我做错了什么吗
这是我的密码:
模型:问题
class Question extends Eloquent {
protected $table = "questions";
protected $primaryKey = 'question_id';
protected $fillable = array('question_title','question_details','ask_by_id');
public function user()
{
return $this->belongsTo('User', 'ask_by_id', 'id');
}
}
在用户模型中,我包含了以下代码:
public function question()
{
return $this->hasMany('Question');
}
$user = User::find($id); // or $user = Auth::user();
$question = new Question();
$question->question_title = Input::get('question_title');
$question->question_details = Input::get('question_title');
$user->question()->save($question);
在我的控制器中,我使用以下代码插入表单数据
$question = new Question();
$question->question_title = Input::get('question_title');
$question->question_details = Input::get('question_title');
$question->user();
$question->save();
不,它不会自动插入。您必须明确地执行此操作。执行此操作的方法很少 其中一个就是像这样填写问号
$question->ask_by_id = $userId;
$question->save();
另一种可能是
首先将您的问题方法更新为
public function question()
{
return $this->hasMany('Question','ask_by_id');
}
然后找到提出问题的用户
$user = User::find(1);
$question = new Question();
$question->question_title = Input::get('question_title');
$question->question_details = Input::get('question_title');
$user->question()->save($question);
这将自动更新ask\u by\u id。我认为你用错了。在这种情况下,使用
user()
没有任何意义。您还应该更改用户
的关系:
public function question()
{
return $this->hasMany('Question','ask_by_id', 'id');
}
使用时:
$question = new Question();
$question->question_title = Input::get('question_title');
$question->question_details = Input::get('question_title');
$question->user();
$question->save();
Laravel不知道在中插入什么内容,请按id询问
您可以使用以下代码:
public function question()
{
return $this->hasMany('Question');
}
$user = User::find($id); // or $user = Auth::user();
$question = new Question();
$question->question_title = Input::get('question_title');
$question->question_details = Input::get('question_title');
$user->question()->save($question);
或
谢谢你的回复。当我使用您的第一个解决方案时,我得到SQLSTATE[42S22]:未找到列:1054“字段列表”中的未知列“user\u id”
Thanks@black_belt你也应该改变你的关系。我已经编辑了我的answer@black_belt很高兴能帮上忙谢谢你的回复。当我尝试另一种解决方案时,调用undefined method illumb\Database\Query\Builder::save()
时出现了此错误,谢谢