<?php

namespace App\Models\Goods;

use App\Base\BaseModel;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Arr;

/**
 * App\Models\Goods\Goods
 *
 * @property int                             $id
 * @property string                          $name
 * @property array                           $image_list
 * @property array                           $spec 商品的规格
 * @property int                             $weight
 * @property string|null                     $desc_html
 * @property string|null                     $spec_attr_html
 * @property string|null                     $faq_html
 * @property \Illuminate\Support\Carbon|null $created_at
 * @property \Illuminate\Support\Carbon|null $updated_at
 * @property \Illuminate\Support\Carbon|null $deleted_at
 * @method static \Illuminate\Database\Eloquent\Builder|Goods newModelQuery()
 * @method static \Illuminate\Database\Eloquent\Builder|Goods newQuery()
 * @method static \Illuminate\Database\Query\Builder|Goods onlyTrashed()
 * @method static \Illuminate\Database\Eloquent\Builder|Goods query()
 * @method static \Illuminate\Database\Eloquent\Builder|Goods whereCreatedAt($value)
 * @method static \Illuminate\Database\Eloquent\Builder|Goods whereDeletedAt($value)
 * @method static \Illuminate\Database\Eloquent\Builder|Goods whereDescHtml($value)
 * @method static \Illuminate\Database\Eloquent\Builder|Goods whereFaqHtml($value)
 * @method static \Illuminate\Database\Eloquent\Builder|Goods whereId($value)
 * @method static \Illuminate\Database\Eloquent\Builder|Goods whereImageList($value)
 * @method static \Illuminate\Database\Eloquent\Builder|Goods whereName($value)
 * @method static \Illuminate\Database\Eloquent\Builder|Goods whereSpec($value)
 * @method static \Illuminate\Database\Eloquent\Builder|Goods whereSpecAttrHtml($value)
 * @method static \Illuminate\Database\Eloquent\Builder|Goods whereUpdatedAt($value)
 * @method static \Illuminate\Database\Eloquent\Builder|Goods whereWeight($value)
 * @method static \Illuminate\Database\Query\Builder|Goods withTrashed()
 * @method static \Illuminate\Database\Query\Builder|Goods withoutTrashed()
 * @mixin \Eloquent
 * @property int                             $status 1 上架 2下架
 * @method static \Illuminate\Database\Eloquent\Builder|Goods whereStatus($value)
 * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Goods\GoodsCategoryMap[] $map
 * @property-read int|null $map_count
 * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Goods\GoodsSku[] $sku
 * @property-read int|null $sku_count
 * @property-read mixed $thumb
 * @property int $view_total
 * @method static \Illuminate\Database\Eloquent\Builder|Goods whereViewTotal($value)
 */
class Goods extends BaseModel
{
    use SoftDeletes;

    protected $table = "goods";
    const STATUS_OK = 1;
    const STATUS_OFF = 2;
    protected $casts = [
        "image_list" => "array",
        "spec" => "array",
    ];

    public function format(...$options)
    {

    }

    public function map()
    {
        return $this->hasMany(GoodsCategoryMap::class, "goods_id", "id");
    }

    public function sku()
    {
        return $this->hasMany(GoodsSku::class, "goods_id", "id");
    }

    public function getThumbAttribute()
    {
        return Arr::first($this->image_list);
    }
}