Удалить / удалить объект отношения из коллекции Laravel Eloquent - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть коллекция Laravel Eloquent по:

$product = Product::query()->with(['merchant', 'picture'])->where('id', $id)->first();

и получите дамп $product, равный

Product {
  #casts: ...
  #dates: ...
  #connection: "mysql"
  #table: null
  #primaryKey: "id"
  #keyType: "int"
  +incrementing: true
  #with: []
  #withCount: []
  #perPage: 15
  +exists: true
  +wasRecentlyCreated: false
  #attributes: array:1 [
    "id" => 27
  ]
  #original: ...
  #changes: []
  #dateFormat: null
  #appends: []
  #dispatchesEvents: []
  #observables: []
  #relations: array:2 [
    "merchant" => Merchant {...}
    "picture" => Picture {...}
    }
  ]
  #touches: []
  +timestamps: true
  #hidden: []
  #visible: []
  #fillable: []
  #guarded: ...
}

Мне нужно удалить объект отношения merchant и picture из этой коллекции.

Я пробовал следующие варианты, но не смог:

unset($product['merchant']);
unset($product->merchant);

Любая помощь будет признательна.

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

В Laravel 5.6.25 вы можете использовать unsetRelation():

$product->unsetRelation('merchant')->unsetRelation('picture');

До этого:

$relations = $product->getRelations();
unset($relations['merchant'], $relations['picture']);
$product->setRelations($relations);
0 голосов
/ 11 сентября 2018

У меня есть таблицы с одинаковыми полями .. Так что мне нужно проверить другой столбец в зависимости от значения. Так что, если значение внешнего ключа тогда же нужно сбросить это отношение

Если у вас есть свойство merchant в модели (столбец merchant в таблице), вы можете получить его значение, используя $product->getOriginal('merchant') или $product->getAttribute('merchant')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...