猿问

laravel,将模型中存储的日期格式转换为在两者之间使用

我想使用whereBetween来获取日期间隔,created_date它工作正常:


$data = Userorder::whereBetween('created_at', [$dateS->format('Y-m-d')." 00:00:00", $dateE->format('Y-m-d')." 23:59:59"])->get();

但是我有另一个列名称order_date,其中此列的日期格式为:星期五 Jan,24,2020,所以我想将其转换为Y-m-d格式


$dateS = new Carbon($startdate);

$dateE = new Carbon($enddate);

$data = Userorder::whereBetween('order_date', [$dateS->format('Y-m-d'), $dateE->format('Y-m-d')])->get();

型:


class Userorder extends Model

{

    protected $table = "userorders";

    protected $fillable = [

        'order_number',

        'product_id',

        'order_time',

        'order_date',

        'product_qty',

        'product_price',

        'product_totalprice',

        'totalprice',

        'product_instruction',

        'product_size',

        'storeinfo_id',

        'product_serve',

        'user_id',

        'user_distance',

        'user_address',

        'user_instruction',

        'office_name',

        'st_address',

        'order_state',

        'order_city',

        'order_zipcode',

        'gratuity',

        'suite_floor',

        'driver_ask',

        'phone_number',

        'paid',

        'isdelivery',

        'deliveredon',

        'show',

        'confirmed',

        'isonline',

        'houseaccount'

    ];

    protected $primaryKey = 'id';

    public $timestamps = true;


牛魔王的故事
浏览 188回答 1
1回答

守着星空守着你

为了实现你所追求的目标,你应该能够将Laravel的iravel的whereRaw()方法与MySQL的STR_TO_DATE()函数(mysql日期格式字符串)结合使用:Userorder::whereRaw('STR_TO_DATE(order_date, "%a %b,%d,%Y") between ? and ?', [$dateS->format('Y-m-d'), $dateE->format('Y-m-d')])->get();话虽如此,如果可能的话,我建议更新您的表(和相关代码),以便它实际上是一列而不仅仅是一个字符串。order_datedate
随时随地看视频慕课网APP
我要回答