语法错误,意外的',',预期为']'

时间:2019-07-28 14:43:09

标签: laravel eloquent laravel-5.8

我正在尝试将所有首字母作为大写字母的数据添加到db中。但这显示了错误语法错误。

  

意外的',',期望']',,,,,,,,,,,,,,,,,,,,

模型

protected $fillable = [
     'category_name',
     'category_description',
     'category_slug',
     'category_image'
];

public function setFirstNameAttribute($value)
{
    $this->attributes[
        'category_name',
        'category_description',
        'category_slug',
        'category_image'
    ] = strtoupper($value);
}

3 个答案:

答案 0 :(得分:0)

尝试一下。

public function setCategoryNameAttribute($value){
    $this->attributes['category_name'] = strtoupper($value);
}

public function setCategoryNameAttribute($value)
{
    return strtoupper($value);
}

如果要处理所有字段,则可能已经定义了所有功能。

答案 1 :(得分:0)

您使用setFirstNameAttribute($value)增变函数是错误的。 Mustator仅适用于一个属性。因此,您必须为每个属性创建多个变量。

可能的答案。如果您要突变category_name

public function setCategoryNameAttribute($value)
{
    $this->category_name = strtoupper($value);
}

如果您要突变category_description

public function setCategoryDescriptionAttribute($value)
{
   $this->category_description = strtoupper($value);
}

同样,您需要为所有其他属性定义多个变体。

编辑

如果您只想大写单词的首字母,请使用title_case()而不是strtoupper()

public function setCategoryDescriptionAttribute($value)
{
   $this->category_description = title_case($value);
}

答案 2 :(得分:-1)

$this->attributes[
    'category_name',
    'category_description',
    'category_slug',
    'category_image'
] = strtoupper($value);

您不能像这样一次设置多个数组值。您必须单独或循环设置它们:

public function setFirstNameAttribute($value)
{
    $attribute_names = [
        'category_name',
        'category_description',
        'category_slug',
        'category_image',
    ];

    foreach ($attribute_names as $attribute_name) {
        $this->attributes[$attribute_name] = strtoupper($value);
    }
}