Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Laravel 4中使用BelongsTo映射时插入数据_Php_Laravel_Laravel 4_Eloquent - Fatal编程技术网

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

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

我正在尝试在我的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
映射,那么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()
时出现了此错误,谢谢