2016-09-11 2 views
0

Ich benutze Laravel Illuminate/Datenbank außerhalb der Laravel-Anwendung. Ich versuche das Eloquent-Modell als Abschlussargument zu übergeben, aber es wirft einen Fehler auf. Vielleicht passiere ich es falsch. Mein Code ist wie folgt:Pass Eloquent Modell als eine Schließung Argument In PHP

 // Create a dummy subject (This is working absolutely fine) 
     SubjectModel::create(array(
      'title' => 'Mathematics', 
      'description' => 'Math Subject', 
      'slug' => 'math', 
      'ka_url' => 'http://khanacademy.org/math' 
     )); 


     $scrapper = new SubjectScrapper(); 
     $scrapper->setUrl(''); 

Dies funktioniert nicht. SubjectModel ist nicht in der folgenden Schließung

  $scrapper->runScrapper(function($subjects) use ($scrapper, SubjectModel $subjectModel) { 

      if(!empty($subjects)) 
      { 
       foreach ($subjects as $subject) { 
        $urlParts = explode('/', $subject['url']); 
        $slug = end($urlParts); 
        $subjectModel::create(array(
         'title'  => $subject['subject_name'], 
         'slug'  => $slug, 
         'ka_url' => $scrapper->getBaseUrl().$subject['link'], 
        )); 
       } 
      } 
     }); 

mir jemand kann übergeben werden bitte sagen, wie diese Aufgabe zu erfüllen.

Antwort

1

Versuchen Sie dies. Keine Notwendigkeit, das Objekt in der Schließung zu übergeben

$scrapper = new SubjectScrapper(); 
$scrapper->setUrl(''); 
$scrapper->runScrapper(function($subjects) use ($scrapper, $output) { 

    SubjectModel::create(array(
     'title'  => 'Math', 
     'slug'  => 'math', 
     'ka_url' => 'http://math' 
)); 

    $output->writeln('<info>Total Subjects Scrapped:: '.count($subjects).'</info>'.PHP_EOL); 
});