Здравствуйте.
Есть модель Product, содержащая список товаров в интернет-магазине. Плагин A, содержащий эту модель, её получает. Есть ли способ редактировать данные этой модели, полученные из плагина А, в плагине Б?
Product
A
А
Б
DontFollow123 Есть ли способ редактировать данные этой модели, полученные из плагина А, в плагине Б?
По такой схеме можно изменять модель:
$a = Model::where('id', $id)->first(); // запрашиваем модель по айдишнику из БД $a->field = 'какое то значение'; // задаём полю field нужное значение. Так свои поля модели ставите $a->save(); // сохраняем модель
То есть, другими словами, могу ли я изменить модель, полученную из одного плагина, в другом плагине?
Или, быть может, изменить модель Product, дописав такой код:
protected static function boot() { parent::boot(); self::retrieved(function ($product) { $product = '123'; }); }
Koresh Хорошо, давай другими словами объясню
Переменную $products получаю из одного плагина. ЭТУ ЖЕ переменную мне нужно отредактировать в другом плагине. Мне не нужно создавать новую такую же. И физически в базе мне не нужно изменять данные. Мне нужно менять данные в коде
Решено. Использовал ивенты
$products = Product::all(); Event::fire('products.retrieved', [&$products]);
и таким образом в обработчик ивента передаю ссылку и могу изменять ЭТУ переменную где угодно
Нашёл другое решение, более правильное.
Product::extend(function($product) { $product->bindEvent('model.afterFetch', function() use ($product) { if ($product->sale > 0) { $product->zest = 'Скидка'; } }); });