gpt4 book ai didi

php - Laravel 5.3 ModelFactory Seeder 调用未定义的方法 Illuminate\Database\Query\Builder::posts()

转载 作者:可可西里 更新时间:2023-11-01 13:49:15 26 4
gpt4 key购买 nike

我正在尝试使用 laravel ModelFactory 创建一个用一些虚拟数据填充表的种子表。我不断收到此错误,但我没有解决它的想法。

“种族”模型

<?php

namespace App\Game;

use Illuminate\Database\Eloquent\Model;

class Race extends Model
{
//
public $timestamps = false;
protected $fillable = ['name','description','icon'];
}

文件 2 模型工厂文件

$factory->define(App\Game\Race::class, function (Faker\Generator $faker) {
return [
'name' => $faker->name,
'description' => $faker->text,
'icon' => $faker->url,
];
});

文件 3 种子文件

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class RacesTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//
factory(App\Game\Race::class, 10)->create()->each(function($u) {
$u->posts()->save(factory(App\Game\Race::class)->make());
});
}
}

我收到以下错误调用未定义的方法 Illuminate\Database\Query\Builder::posts()

当我调用 'php artisan db:seed' 时会发生这种情况

最佳答案

看起来你直接从the documentation复制了播种机.在文档的示例中,有一个 User 模型通过在用户模型中定义的函数 postsPosts 模型关联。参见 this documentation page有关为什么在 User 模型上有 posts 方法的更多信息。

您有一个 Race 模型,它没有与之相关的 Posts,这表明您的竞赛模型中没有 posts 方法。尝试将工厂简化为:

public function run()
{
//
factory(App\Game\Race::class, 10)->create();
}

这应该会在您的数据库中为您创建 10 个比赛条目。仅当您还打算在播种器中创建与工厂创建的每个实例相关的其他模型时,您才希望提供传递给 each 方法的闭包,或者为 执行一些其他操作由工厂创建的 Race 的每个实例(每个)。

关于php - Laravel 5.3 ModelFactory Seeder 调用未定义的方法 Illuminate\Database\Query\Builder::posts(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39878916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com