Laravel 5.6
在扩展项目功能时发现自己遇到了一个奇怪的问题。
现在我需要创建两个新模型:
order
item
Faker
以及拉维工厂/播种机。最大的问题是在与
秩序
模型。
company
外键名为
company_id
和
user
seller_id
. 公司没问题,麻烦就在我身后
卖家id
role
与公司相关我的工厂会随机挑选它,因为用户与公司(直接)没有关系,我不能只是用一个
公司id
为了让所有用户都与我的公司“相关”,我在我的网站上创建了下一个函数
Company
型号:
public function users()
{
$roles = $this->roles;
$users = [];
foreach ($roles as $role) {
foreach ($role->users as $user) {
$user->makeHidden(['pivot']);
array_push($users, $user);
}
}
$users = array_unique_objects($users);
return $users;
}
laravel-permissions
,一个由Spatiale制作的图书馆。
角色
公司
然后将其推送到一组用户。
此自定义帮助程序:
array_unique_objects
跟踪数组中的任何重复用户并将其删除。
OrderFactory.php
看起来像这样:
<?php
use Faker\Generator as Faker;
use App\Models\User;
use App\Models\Company;
$factory->define(App\Models\Order::class, function (Faker $faker) {
$company = Company::get()->random(1);
$users = $company->users();
$user = array_random($users);
return [
'company_id' => $company,
'seller_id' => $user->id,
'code' => strtoupper(str_random(10)),
'description' => $faker->sentence($nbWords = rand(2, 4), $variableNbWords = true),
'created_at' => $faker->dateTimeBetween($startDate = '-1 year', $endDate = 'now', $timezone = null)
];
});
但是当我运行
php artisan db:seed
命令,它将在控制台中引发下一个错误:
BadMethodCallException:方法\Database\Eloquent\Collection::users不存在。
在>/home/ironman/Documentos/Sandbox/Proventas/Backend/vendor/laravel/framework/src/Illuminate/Support/Traits/Macroable.php:99
96 |公共函数uu调用($method,$parameters)
97| {
100 |'方法%s::%s不存在',静态::类,$Method
101| ));
102| }
103|
1\Support\Collection::\u call(“用户”,[])
2\Database\Eloquent\Factory::{closure}(对象(Faker\Generator),[])
/home/ironman/Documentos/Sandbox/Proventas/Backend/vendor/laravel/framework/src/Illuminate/Database/Eloquent/FactoryBuilder.php:274
请使用参数-v查看更多详细信息。
我能做些什么来解决这个问题吗?我知道使用Laravel关系可以解决我的问题,但这个项目的规范说,我必须保持事情的原样。