App\User 下的 posts 是啥呢

/**
 * 运行数据库填充。
 *
 * @return void
 */
public function run()
{
    factory(App\User::class, 50)->create()->each(function ($u) {
        $u->posts()->save(factory(App\Post::class)->make());
    });
}

这里的posts是啥呢,我的User里没有。。。然后报错了
file

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

你有 post 模型吗?这里的 $u->posts() 的意思是一个 user 拥有多个 post, 返回的是一个 Illuminate\Database\Eloquent\Relations\HasMany ,是一个一对多的关系 .

5年前 评论
讨论数量: 9

你有 post 模型吗?这里的 $u->posts() 的意思是一个 user 拥有多个 post, 返回的是一个 Illuminate\Database\Eloquent\Relations\HasMany ,是一个一对多的关系 .

5年前 评论

@青风百里 没写post,model里就只连接了数据库定义了字段。
这里的 $u->posts()->save(factory(App\Post::class)->make());是啥意思哈?上文没交代,突然写了这么些很懵

5年前 评论

@青风百里 数据库假数据已经添加上去了,就是报错了,不知道后面的save() make()的作用。是外键关联数据的插入吗?

5年前 评论

@zhangjian 你的 user 模型有没有关联 Post 模型? 在 user.php 中应该有这样的一个代码,用来定义他们之间的一对多关系

public function posts()
{
    return $this->hasMany(Post::class)
}
5年前 评论

@zhangjian

  • make() 方法是 Illuminate\Database\Eloquent\FactoryBuilder 实例的一个方法,在你这里 factory(App\Post::class) 就是一个 FactoryBuilder 实例,然后调用make() 返回一个 Post 实例.
  • save() 方法是 Illuminate\Database\Eloquent\Model 提供的方法,可以将数据存入数据库,在你这里传入了 Post 实例,那么实际上就相当于把 post 数据存入数据库
5年前 评论

@青风百里 看懂了,谢谢啦😀

5年前 评论

@zhangjian 还有文档中的这个例子是不能直接运行的,因为它只是一个代码片段.

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!