Laravel模型急切加载不起作用

时间:2014-08-21 09:20:49

标签: laravel

我有一个用户表和帖子表。用户可以有很多帖子,帖子只有一个用户。典型的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

有人会告诉我我的代码有什么问题吗?感谢

1 个答案:

答案 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'
        ));