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();
你是对的,它就是这样做的。非常感谢!