Php Laravel访问器和变异器不适用于Camel Case表字段名称
我的桌子如下所示:Php Laravel访问器和变异器不适用于Camel Case表字段名称,php,laravel,eloquent,accessor,mutators,Php,Laravel,Eloquent,Accessor,Mutators,我的桌子如下所示: 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` TINY
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不会执行上述两种方法来自定义我的表字段值
ProductCategoryImage模型从CustomBaseModel扩展而来,BaseModel从Elount扩展而来
Laravel是否有beforeFind()、afterFind()、beforeSave()、afterSave()等事件处理程序方法?只有在访问模型上的属性时才会调用访问器/变异器。这些属性的使用方式如下:
$name = $image->thumbnail_name; // getThumbnailNameAttribute()
$image->thumbnail_name = 'foo'; // setThumbnailNameAttribute()
魔法属性名称将是StudlyCase属性名称的snake\u case版本
由于访问者的属性名不是缩略图\u name
,因此Laravel不会自动找到原始值。您可以直接从模型的属性数组中获取它:
public function getThumbnailNameAttribute($value)
{
return self::getThumbnailUrl($this->attributes['thumbnailName']);
}
请注意,您仍然需要调用save()
,以使mutator所做的更改显示在数据库中
如果希望在模型
保存
、创建
、恢复
等时自动发生某些事情,则可以侦听相应的生命周期事件:只有在访问模型上的属性时才会调用访问器/变异器。这些属性的使用方式如下:
$name = $image->thumbnail_name; // getThumbnailNameAttribute()
$image->thumbnail_name = 'foo'; // setThumbnailNameAttribute()
魔法属性名称将是StudlyCase属性名称的snake\u case版本
由于访问者的属性名不是缩略图\u name
,因此Laravel不会自动找到原始值。您可以直接从模型的属性数组中获取它:
public function getThumbnailNameAttribute($value)
{
return self::getThumbnailUrl($this->attributes['thumbnailName']);
}
请注意,您仍然需要调用save()
,以使mutator所做的更改显示在数据库中
如果您希望在模型
保存
、创建
、恢复
等时自动发生某些事情,则可以侦听相应的生命周期事件:我的一位团队成员使用toArray()方法实现了它:
工作很有魅力。我的一名团队成员使用toArray()方法实现了这一目标:
工作很有魅力。我将尝试您的解决方案并向您提供最新信息。非常感谢您的快速回复。我将尝试您的解决方案并向您提供最新信息。非常感谢您的快速回复。