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