我有一个用户表和帖子表。用户可以有很多帖子,帖子只有一个用户。典型的1:n关系。我想做的是通过用户模型插入后期数据(急切加载)。喜欢这个:
User::find(1)->posts()->insert(array(
'title' => 'post 1',
'body' => 'lorem ipsum is just a dummy text'
));
这是用户模型:
class User extends \Eloquent {
protected $fillable = ['username', 'email'];
protected $table = 'users';
public function posts()
{
return $this->hasMany('Post');
}
}
这是我的帖子模型
class Post extends \Eloquent {
protected $fillable = ['title', 'user_id', 'body'];
protected $table = 'posts';
}
这是后期迁移(为了支持关系,我将user_id设为外表)
Schema::create('posts', function(Blueprint $table)
{
$table->increments('id');
$table->integer('user_id')->references('id')->on('user');
$table->string('title');
$table->text('body');
$table->timestamps();
});
问题: 插入数据但user_id = 0和timestamps = 00000000
有人会告诉我我的代码有什么问题吗?感谢
答案 0 :(得分:1)
您想要的是->save()
,而不是->insert()
。阅读此链接:http://laravel.com/docs/eloquent#inserting-related-models
->insert()
正在使用不了解您的关系的QueryBuilder,而->save()
会(或->saveMany()
)
User::find(1)->posts()->save(new Post(
'title' => 'post 1',
'body' => 'lorem ipsum is just a dummy text'
));