2016-09-11 3 views
0

저는 Laravel 응용 프로그램 외부에서 Laravel Illuminate/Database를 사용하고 있습니다. Eloquent 모델을 클로저 인수로 전달하려고하지만 오류가 발생합니다. 나는 그것을 잘못 전달하고 있을지도 모른다. 내 코드는 다음과 같습니다 :PHP에서 클로저 인수로 Eloquent 모델을 전달하십시오.

 // 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(''); 

이것은 작동하지 않습니다. SubjectModel는 사람이 어떻게이 작업을 수행하는 방법을 가르쳐 주 시겠어요 다음과 같은 폐쇄

  $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'], 
        )); 
       } 
      } 
     }); 

전달되지 않습니다.

답변

1

시도해보십시오. 닫을 때 객체를 전달할 필요가 없습니다.

$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); 
}); 
관련 문제