Laravel 5.6-在ModelFactory中使用模型函数

Laravel 5.6-在ModelFactory中使用模型函数,laravel,laravel-5.6,Laravel,Laravel 5.6,我使用的是Laravel 5.6,在扩展项目功能时发现了一个奇怪的问题 现在我需要创建两个新模型:order和item。使用Faker和Laravel工厂/播种机很容易用虚拟数据填充items表。最大的问题是在使用订单模型时 这个小家伙与一家名为公司id的外键的公司和名为卖家id的外键的用户有关。公司字段正常,问题出在我的卖家id 该卖家需要一个与我的工厂随机挑选的公司相关的角色,因为该用户与该公司(直接)没有关系,我不能用公司id来查找它 为了让所有用户与我的公司“相关”,我在我的公司模型上创

我使用的是
Laravel 5.6
,在扩展项目功能时发现了一个奇怪的问题

现在我需要创建两个新模型:
order
item
。使用
Faker
和Laravel工厂/播种机很容易用虚拟数据填充items表。最大的问题是在使用
订单
模型时

这个小家伙与一家名为
公司id
的外键的
公司
和名为
卖家id
的外键的
用户
有关。公司字段正常,问题出在我的
卖家id

该卖家需要一个与我的工厂随机挑选的公司相关的
角色,因为该用户与该公司(直接)没有关系,我不能用
公司id来查找它

为了让所有用户与我的公司“相关”,我在我的
公司
模型上创建了下一个函数:

公共功能用户()
{
$roles=$this->roles;
$users=[];
foreach($roles作为$role){
foreach($role->users as$user){
$user->makeHidden(['pivot']);
阵列推送($users,$user);
}
}
$users=数组\唯一\对象($users);
返回$users;
}
顺便说一句:我使用的是Spatiale制作的
laravel权限

此函数的作用是从
公司
获取每个
角色
,然后将其推送到一组用户

此自定义帮助程序:
array\u unique\u对象
跟踪我的数组中的任何重复用户并将其删除

这个函数很有效,因为我已经在几个控制器上进行了测试,所以我知道它没有问题。无论如何,我的
OrderFactory.php
如下所示:

您的呼叫

$company = Company::get()->random(1);
不返回单个公司。它返回一个集合,该集合没有用户动态函数。试一试

$company = Company::get()->random(1)->first();

你是对的,它就是这样做的。非常感谢!