我的表看起来像下面:
CREATE TABLE IF NOT EXISTS `ProductCategoryImage` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`productCategoryId` INT(11) NOT NULL,
`imageName` VARCHAR(255) NOT NULL,
`thumbnailName` VARCHAR(255) NULL DEFAULT NULL,
`location` TINYINT(2) NOT NULL DEFAULT 1,
`status` TINYINT(2) NOT NULL DEFAULT 1,
`createdAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updatedAt` TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
`deletedAt` DATETIME NULL DEFAULT NULL,
`createdById` INT(11) NOT NULL DEFAULT -1,
`updatedById` INT(11) NULL DEFAULT NULL,
`deletedById` INT(11) NULL DEFAULT NULL
);
在ProductCategoryImage模型中,我写了下面两个方法:
public function getThumbnailNameAttribute($value)
{
return self::getThumbnailUrl($value);
}
public function setThumbnailNameAttribute($value)
{
$this->attributes['thumbnailName'] = $value;
}
Laravel不会执行以上两个方法来自定义我的table字段值。
ProductCategoryImage模型从自定义BaseModel扩展而来,BaseModel从Eloquent扩展而来。
Laravel有没有类似beforeFind(),afterFind(),beforeSave(),afterSave()这样的事件处理方法?
3条答案
按热度按时间iecba09b1#
我的一个团队成员使用toArray()方法实现了它:
很管用。
rseugnpd2#
访问器/修改器仅在访问模型上的属性时调用。这些属性的用法如下:
神奇的属性名将是StudlyCase属性名的snake_case版本。
由于访问器的属性名不是
thumbnail_name
,Laravel不会自动找到原始值。你可以直接从模型的attributes数组中获取:请注意,您仍然需要调用
save()
,以使mutator所做的更改显示在数据库中。如果您希望在模型为
saving
、creating
、restored
等时自动执行某些操作。则可以侦听相应的生命周期事件:https://laravel.com/docs/5.7/eloquent#eventsxxhby3vn3#