>source

다음 코드에 문제가 있습니까? 열심히 노력했지만 대답이 없습니다. dom 필터링의 루프에서 각 반복마다 모델을 만들고 싶습니다.

$node->filter('div.panel-section.font-size-2.font-size-xxs-normal .row')->each(function (Crawler $nestedNode, $i) use (&$part) {
        $model_category = ModelCategory::firstOrCreate(['name' => $nestedNode->filter('.bold.mb-2 a')->first()->text()]);
        $part->modelCategories()->sync($model_category, false);
        $nestedNode->filter('.col-xs-6.col-md-3')->each(function (Crawler $columns, $i) use (&$model_category) {
             $model = Model::Create(['name' => $columns->filter('a')->first()->text()]);
             $model->category()->associate($model_category);
             $model->save();
        });
});

모델과 ModelCategory 사이에는 일대 다 관계가 있습니다

  • 답변 # 1

    때로 찾고 일부 검색 후 문제가 발견되었습니다. 동기화 구문 때문입니다. 웅변 관계의 sync 함수는 id의 배열을 첫 번째 인수로 얻지 만 객체를 전달했습니다. 다음은 수정 된 코드입니다.

    $node->filter('div.panel-section.font-size-2.font-size-xxs-normal .row')->each(function (Crawler $nestedNode, $i) use (&$part) {
        $model_category = ModelCategory::firstOrCreate(['name' => $nestedNode->filter('.bold.mb-2 a')->first()->text()]);
        $part->modelCategories()->sync([$model_category->id], false);
        $nestedNode->filter('.col-xs-6.col-md-3')->each(function (Crawler $columns, $i) use (&$model_category) {
             $model = Model::Create(['name' => $columns->filter('a')->first()->text()]);
             $model->category()->associate($model_category);
             $model->save();
        });
    });
    
    

관련 자료

  • 이전 azerothcore - 모든 모듈 소스 파일을 포함하는 CMake 매크로?
  • 다음 javascript - div 및 a 태그를 사용하여 선택/옵션 태그의 검색 기능 - 즉, 키보드를 사용하여 첫 번째 문자를 입력하면 링크로 이동합니까?