laravel工厂关系的随机不同用户ID

问题描述

我正在使用工厂生成更多的伪数据。
这是我的调用工厂的代码

$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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...