繁体   English   中英

在Laravel 4中使用BelongsTo映射时插入数据

[英]Inserting data when using BelongsTo mapping in Laravel 4

我正在尝试在Laravel 4应用程序中实现belongsTo映射。 但是我似乎无法正常工作。

我有一个名为的数据库表: 问题:

question_id | question_title | question_details| ask_by_id | created_at|  updated_at 

这里ask_by_idusers表的外键

我面临的问题是,当我将数据插入表中时,除ask_by_id列之外的所有列值ask_by_id正确插入。 如果由于我使用belongTo映射而没错,那么Laravel应该自动为我自动将当前用户的id值插入ask_by_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');
}

在我的控制器中,我正在使用以下代码来插入表单数据。

 $question = new Question();
 $question->question_title = Input::get('question_title');
 $question->question_details = Input::get('question_title');
 $question->user();
 $question->save();

不,它不会自动插入,您必须显式地执行此操作,方法很少。

其中之一是像这样填充ask_by_id。

$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_by_id。

我认为您使用错了。 在这种情况下,使用user()毫无意义。 您还应该更改与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不知道要在ask_by_id插入什么。

您可以使用以下代码:

 $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');

 $user = User::find($id); // or $user = Auth::user();
 $question->ask_by_id = $user->id;
 $question->save();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM