У меня есть модель ProductLandedCost с отношением morphToMany к различным другим моделям: Warehouse, например:
class Warehouse extends Model
{
// ...
public function productLandedCosts(): MorphToMany
{
return $this->morphToMany(
ProductLandedCost::class,
'product_landed_costable'
);
}
}
Полиморфные отношения опосредуются таблицей product_landed_costables. В этой таблице я хочу записать некоторые метаданные о каждой связи, поэтому столбцов в ней на несколько больше, чем в типичной полиморфной таблице, включая временные метки (updated_at и созданный_at). Таблица определяется этой миграцией:
public function up(): void
{
Schema::create('product_landed_costables', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->unsignedBigInteger("product_landed_cost_id");
$table->string("product_landed_costable_type", 255);
$table->unsignedBigInteger("product_landed_costable_id");
$table->foreign('product_landed_cost_id')
->references('id')
->on('product_landed_costs');
$table->string("source", 255);
$table->string("action", 255);
});
}
Итак, когда я прикрепляю ProductLandedCost к складу, я делаю что-то вроде этого:
$warehouse->productLandedCosts()->save($product_landed_cost, [
"action" => "action",
"source" => "source",
]);
Это правильно добавит запись в мою таблицу Product_landed_costables. Однако он не заполняет столбцы меток времени (created_at и update_at) — для них установлено значение null. То же самое верно, если я использую Attach() вместо save().
Есть ли способ проинструктировать Eloquent автоматически устанавливать эти временные метки в этой ситуации?
Этот вопрос и этот вопрос похожи на мои, но они оба стремятся поместить временные метки в таблицу связанной модели, тогда как я хотел бы поместить их в саму полиморфную таблицу.
Я понимаю, что могу добавить временные метки вручную (как показано ниже), но поскольку в большинстве других ситуаций Eloquent добавляет их автоматически, мне интересно, не упускаю ли я что-то здесь.
$now = Carbon::now();
$warehouse->productLandedCosts()->save(
$product_landed_cost,
[
"action" => "action",
"source" => "source"
"created_at" => $now,
"updated_at" => $now
]
);
Подробнее здесь: https://stackoverflow.com/questions/798 ... tion-table
Автоматически устанавливать временные метки в таблице полиморфных отношений. ⇐ Php
Кемеровские программисты php общаются здесь
1762878674
Anonymous
У меня есть модель ProductLandedCost с отношением morphToMany к различным другим моделям: Warehouse, например:
class Warehouse extends Model
{
// ...
public function productLandedCosts(): MorphToMany
{
return $this->morphToMany(
ProductLandedCost::class,
'product_landed_costable'
);
}
}
Полиморфные отношения опосредуются таблицей product_landed_costables. В этой таблице я хочу записать некоторые метаданные о каждой связи, поэтому столбцов в ней на несколько больше, чем в типичной полиморфной таблице, включая временные метки (updated_at и созданный_at). Таблица определяется этой миграцией:
public function up(): void
{
Schema::create('product_landed_costables', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->unsignedBigInteger("product_landed_cost_id");
$table->string("product_landed_costable_type", 255);
$table->unsignedBigInteger("product_landed_costable_id");
$table->foreign('product_landed_cost_id')
->references('id')
->on('product_landed_costs');
$table->string("source", 255);
$table->string("action", 255);
});
}
Итак, когда я прикрепляю ProductLandedCost к складу, я делаю что-то вроде этого:
$warehouse->productLandedCosts()->save($product_landed_cost, [
"action" => "action",
"source" => "source",
]);
Это правильно добавит запись в мою таблицу Product_landed_costables. Однако он не заполняет столбцы меток времени (created_at и update_at) — для них установлено значение null. То же самое верно, если я использую Attach() вместо save().
Есть ли способ проинструктировать Eloquent автоматически устанавливать эти временные метки в этой ситуации?
Этот вопрос и этот вопрос похожи на мои, но они оба стремятся поместить временные метки в таблицу связанной модели, тогда как я хотел бы поместить их в саму полиморфную таблицу.
Я понимаю, что могу добавить временные метки вручную (как показано ниже), но поскольку в большинстве других ситуаций Eloquent добавляет их автоматически, мне интересно, не упускаю ли я что-то здесь.
$now = Carbon::now();
$warehouse->productLandedCosts()->save(
$product_landed_cost,
[
"action" => "action",
"source" => "source"
"created_at" => $now,
"updated_at" => $now
]
);
Подробнее здесь: [url]https://stackoverflow.com/questions/79816244/automatically-set-timestamps-on-polymorphic-relation-table[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия