Product.php 3.6 KB
<?php

namespace App\Models\Product;

use App\Helper\Arr;
use App\Models\Base;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\SoftDeletes;

class Product extends Base
{
    use SoftDeletes;

    //设置关联表名
    protected $table = 'gl_product';
    //连接数据库
    protected $connection = 'custom_mysql';
    const STATUS_DRAFT = 0;
    const STATUS_ON = 1;
    const STATUS_RECYCLE = 2;
    const STATUS_THREE = 3;

    public static function statusMap(){
        return [
            self::STATUS_DRAFT    => '草稿',
            self::STATUS_ON   => '已发布',
            self::STATUS_RECYCLE  => '回收站',
            self::STATUS_THREE  => '待发布',
        ];
    }

    /**
     * @var 获取产品类型
     */
    public $productType = [
        1=>'一般产品',
        2=>'推荐产品',
        3=>'热销产品'
    ];

    public function getThumbAttribute($value){
        if(!empty($value)){
            $value = Arr::s2a($value);
        }
        return $value;
    }


    public function getGalleryAttribute($value){
        if(!empty($value)){
            $value = Arr::s2a($value);
        }
        return $value;
    }

    /**
     * @remark :下载文件
     * @name   :getFilesAttribute
     * @author :lyh
     * @method :post
     * @time   :2024/1/23 14:29
     */
    public function getFilesAttribute($value){
        if(!empty($value)){
            $value = Arr::s2a($value);
        }
        return $value;
    }

    /**
     * @remark :视频
     * @name   :getVideoAttribute
     * @author :lyh
     * @method :post
     * @time   :2024/1/23 14:31
     */
    public function getVideoAttribute($value){
        if(!empty($value)){
            $value = Arr::s2a($value);
        }
        return $value;
    }

    /**
     * @remark :图标获取器
     * @name   :getGalleryAttribute
     * @author :lyh
     * @method :post
     * @time   :2023/7/21 11:11
     */
    public function getIconAttribute($value){
        if(!empty($value)){
            $value = Arr::s2a($value);
        }
        return $value;
    }


    public function getAttrsAttribute($value){
        return  Arr::s2a($value);
    }

    public function getDescribeAttribute($value){
        return  Arr::s2a($value);
    }



    public function getSeoMateAttribute($value){
        return  Arr::s2a($value);
    }



    public function getCategoryIdAttribute($value){
        return Arr::setToArr(trim($value,','));
    }


    public function getAttrIdAttribute($value){
        return Arr::setToArr($value);
    }


    public function getDescribeIdAttribute($value){
        return Arr::setToArr($value);
    }


    public function getKeywordIdAttribute($value){
        return Arr::setToArr(trim($value,','));
    }
    public function getKeywordVideoIdAttribute($value){
        return Arr::setToArr(trim($value,','));
    }
    public function getRelatedProductIdAttribute($value){
        return Arr::setToArr($value);
    }

//    public static function getNumByProjectId($project_id){
//        return self::where('project_id', $project_id)->where('status', self::STATUS_ON)->count();
//    }

    public function getSendTimeAttribute($value){
        if(!$value){
            return date('Y-m-d H:i:s', strtotime($this->getAttribute('created_at')));
        }
        return $value;
    }

    /**
     * 多对多关联
     * @return BelongsToMany
     * @author zbj
     * @date 2024/1/22
     */
    public function category(): BelongsToMany
    {
        return $this->belongsToMany(Category::class, 'gl_product_category_related', 'product_id', 'cate_id');
    }
}