2017-05-08 94 views
0

我尝试做一个数据透视表播种。 这里是我的代码播种与ID阵列Laravel不起作用

public function run() 
{ 
    // Get array of ids 
    $teacherIds = DB::table('teachers')->pluck('id'); 
    $courseIds = DB::table('courses')->pluck('id'); 

    // Seed course_teacher table 
    foreach ((range(1, 1)) as $index) 
    { 
     DB::table('course_teacher')->insert(
      [ 
       'teacher_id' => $teacherIds[array_rand((array) $teacherIds)], 
       'course_id' => $courseIds[array_rand((array) $courseIds)] 
      ] 
     ); 
    } 
} 

我加入(阵列),因为我有我给一个对象时,它希望数组中的错误。

但因为我有另一个错误undefined index:

你能帮助我吗?非常感谢

+0

在哪条线上得到该错误? – Exprator

+0

打印'$ teacherIds'的结果,在这里显示它给出了什么? –

回答

4

为了确保在获得$teacherIds$courseIds时获得一个数组,请添加toArray函数以确保获取数组而不是Collection对象。

// Get array of ids 
$teacherIds = DB::table('teachers')->pluck('id')->toArray(); 
$courseIds = DB::table('courses')->pluck('id')->toArray(); 

通过这样做,您不需要在array_rand函数中投射数组。

更新:

更妙的是使用random功能。这个函数会为你选择一个随机元素。

$teacherIds = DB::table('teachers')->pluck('id'); 
$courseIds = DB::table('courses')->pluck('id'); 

DB::table('course_teacher')->insert(
    [ 
     'teacher_id' => $teacherIds->random(), 
     'course_id' => $courseIds->random() 
    ] 
); 
+0

非常感谢!您的解决方案运作良好,我更了解为什么! – Jeremy