【发布时间】:2018-11-02 12:05:16
【问题描述】:
问题
当 Eloquent 的 create 方法中存在的字段或为数据库播种时,我无法让 Laravel 忽略数据库中不存在的字段。在下面的示例中,Event 表中不存在“day”字段。但是,我需要它存在于数组中,这样我就可以在 EventObserver.php 中使用它,以便在创建 $event 的同时创建 $event->day。我意识到我可以在它自己的工厂中创建Day,我只是想知道这是否可行甚至是可取的。
错误
未找到列:1054“字段列表”中的未知列“日”
我的代码
我正在尝试将 Observer 方法附加到我的 Event 模型中,该模型侦听 created 方法,以便我可以为每个关系创建一个新对象。在我的 EventObserver 中,我有以下内容;
public function created(Event $event)
{
//get all attributes
$data = $event->getAttributes();
# fill any related models
$event->day->fill($data['day']);
# save event
$event->push();
}
在我的事件工厂中,我有这个;
//EventFactory.php
$factory->define(App\Event::class, function (Faker $faker) {
return [
"name" => "A Test Event",
"description" => $faker->paragraphs(3, true),
"event_start_date" => today(),
"event_opening_date" => today(),
"event_closing_date" => tomorrow(),
"user_id" => 1,
"banner_id" => 1,
"gallery_id" => 1,
"related_event_id" => 1,
"status" => "published",
"purchase_limit" => 1000,
"limit_remaining" => 1000,
"delivery_method" => "collection",
"merchandise_delivery_method" => "collection",
"day" => [
"event_id" => 1,
"name" => "Created with observer",
"date" => today(),
"ticket_limit" => 1000,
"limit_remaining" => 1000
]
];
});
总结
如何让 Laravel 在创建事件时忽略 day: [] 属性,以便我仍然可以在观察者中使用它?
【问题讨论】: