问题描述
$users = User::whereIn('role_id',[3,4])->where('is_active','Y')->select('id','role_id')->get();
$questions = factory(Question::class,$count)
->create()
->each(function ($question) use($users){
$s_users = $users->where('role_id','4')->pluck('id');
if ($s_users->contains('id',$question->user_id)) {
$users_list = $s_users;
} else {
$users_list = $users->pluck('id');
}
$question->answers()->savemany(factory(QuestionAnswer::class,rand(0,3))->create(
[
'user_id' => $users_list->diff([$question->user_id])->random()
]
));
});
当前输出
问题的所有答案的user_id都相同。
我如何使其与众不同?
更新
我改变了这种关系
->each(function ($question) use($users){
$question->answers()->savemany(factory(QuestionAnswer::class,3))->create(
[
'updated_by' => $question->user_id
]
));
});
并进行计算以在工厂中生成随机用户ID。 所以现在可以正常工作了。 实际上,updated_by应该是答案user_id,而不是用户ID。 因为,updated_by列使用不多,所以答案表中还有另一列user_id。现在,这些虚拟数据就可以了。
但是
是否可以在不分配任何值的情况下在工厂中传递数据 列值?
就像..在我的情况下,我需要有问题的用户ID,但是我们不需要在答案表的任何列中进行更新。
任何帮助将不胜感激,谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)