2017-05-08 13 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

関連する問題