6
0
Fork 0

优化模型属性转换

release
李静 2021-11-25 15:34:15 +08:00
parent e27c4bf1f6
commit 133b52200e
5 changed files with 56 additions and 9 deletions

View File

@ -0,0 +1,42 @@
<?php
namespace App\Casts;
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
class JsonArray implements CastsAttributes
{
/**
* Cast the given value.
*
* @param \Illuminate\Database\Eloquent\Model $model
* @param string $key
* @param mixed $value
* @param array $attributes
* @return mixed
*/
public function get($model, string $key, $value, array $attributes)
{
$value = json_decode($value);
return is_array($value) ? $value : [];
}
/**
* Prepare the given value for storage.
*
* @param \Illuminate\Database\Eloquent\Model $model
* @param string $key
* @param mixed $value
* @param array $attributes
* @return mixed
*/
public function set($model, string $key, $value, array $attributes)
{
if (! is_array($value)) {
$value = [];
}
return json_encode($value);
}
}

View File

@ -4,7 +4,7 @@ namespace App\Casts;
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
class PriceAttributes implements CastsAttributes
class Price implements CastsAttributes
{
/**
* Cast the given value.

View File

@ -2,6 +2,7 @@
namespace App\Models;
use App\Casts\JsonArray;
use Dcat\Admin\Traits\HasDateTimeFormatter;
use Illuminate\Database\Eloquent\Model;
@ -12,7 +13,7 @@ class ProductAttr extends Model
protected $table = 'product_attrs';
protected $casts = [
'attrs'=> 'array',
'attrs'=> JsonArray::class,
];
public function group()

View File

@ -2,6 +2,7 @@
namespace App\Models;
use App\Casts\JsonArray;
use Dcat\Admin\Traits\HasDateTimeFormatter;
use Illuminate\Database\Eloquent\Model;
@ -12,6 +13,6 @@ class ProductSpec extends Model
protected $table = 'product_specs';
protected $casts = [
'items' => 'array',
'items' => JsonArray::class,
];
}

View File

@ -2,9 +2,9 @@
namespace App\Models;
use App\Casts\PriceAttributes;
use App\Casts\JsonArray;
use App\Casts\Price;
use Dcat\Admin\Traits\HasDateTimeFormatter;
use Illuminate\Database\Eloquent\Model;
class ProductSpu extends Model
@ -13,9 +13,12 @@ class ProductSpu extends Model
protected $table = 'product_spus';
protected $casts = [
'sell_price'=>PriceAttributes::class,
'market_price'=>PriceAttributes::class,
'cost_price'=>PriceAttributes::class,
'user_price'=>PriceAttributes::class,
'images' => JsonArray::class,
'sell_price' => Price::class,
'market_price' => Price::class,
'cost_price' => Price::class,
'user_price' => Price::class,
'attrs' => JsonArray::class,
'is_sell' => 'bool',
];
}