동일한 외래 키로 레코드를 대량 업데이트하려고했습니다. 하지만 문제가 생겼습니다. 내가 사용한다면
$products = $products::findorfail($prod_id);
단일 열을 업데이트합니다. 그런 다음 사용하려고 할 때
$products = $products::query()->where('product_id', $prod_id)->get();
나는 발생하는 "Method Illuminate\\Database\\Eloquent\\Collection::options does not exist.",
나는이 문제를 극복하려면 어떻게합니까.
내 현재 코드는 다음과 같습니다.
public function update(array $data = [], $prod_id, Variation $products)
{
foreach ($data['variants'] as $product) {
$products = $products::query()->where('product_id', $prod_id)->get();
$products->options()->detach(($product['option_id']));
$products->options()->attach(($product['option_id']));
$products->fill(Arr::set($data, 'product_id', $prod_id));
$products->fill(Arr::only($product, $products->getFillable()));
}
return $products->save();
}
미리 감사드립니다.
당신은 가야 first()
의 하나 개의 인스턴스에 방법을 제품 모델 다음 첨부하거나 다른 것들로 분리합니다. 또한 관계를 만들거나 제거하기 위해 배열을 연결하거나 분리하는 방법을 전달할 수 있으므로 먼저 ID를 수집 한 다음 이러한 방법에 전달할 수 있습니다.
foreach ($data['variants'] as $product) {
$option_ids[] = $product['option_id'];
}
$product = $products::query()
->where('product_id', $prod_id)
->first();
$product->options()->detach($option_ids);
$product->options()->attach($option_ids);
$product->fill(Arr::set($data, 'product_id', $prod_id));
$product->fill(Arr::only($product, $product->getFillable()));
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다