首页 文章

Laravel模型急切加载不起作用

提问于
浏览
0

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

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

相关问题