<?php

namespace App\Models;

use App\Traits\SortableTraitPinned;
use Dcat\Admin\Traits\HasDateTimeFormatter;

use Dcat\Admin\Traits\ModelTree;
use Illuminate\Database\Eloquent\Model;
use Spatie\EloquentSortable\Sortable;
use Spatie\EloquentSortable\SortableTrait;

class BaseProduct extends Model
{
    use HasDateTimeFormatter;
    use SortableTraitPinned;

    protected $table = 'base_product';

    // 可选：你可以在这里自定义排序配置
    public $sortable = [
        'order_column_name' => 'order',  // 排序字段
        'sort_when_creating' => true,    // 创建时自动排序
    ];

    protected $casts = [
        'created_at' => 'datetime:Y-m-d H:i:s',
        'updated_at' => 'datetime:Y-m-d H:i:s',
        'parameters' => 'json', // 将 attributes 字段转换为数组
    ];

    public function baseProductCategory()
    {
        return $this->hasOne(BaseProductCategory::class,'id','category_id');
    }

    protected $fillable = [
        'id',
        'title',
        'keywords',
        'description',
        'sku',
        'category_id',
        'issuance_date',
        'order',
        'enabled',
        'content',
        'parameters',
        'created_at',
        'updated_at',
        'is_pinned',
    ];

    // 一对多关联
    public function images()
    {
        return $this->hasMany(BaseProductImage::class, 'product_id','id')->orderBy('order', 'asc')->orderBy('id', 'asc');
    }

}
