mysql - larval ORM 模型使用find方法无法准确的查找到对应的数据
PHP中文网
PHP中文网 2017-04-17 16:33:15
[MySQL讨论组]

mysql 数据表主键Order_ID为bigint(20),使用Order模型查找对应的订单却找到了其他的订单。
比如:Order:find(20170214006401),却查找到Order_ID为20161009000577的订单.
调用代码如下:
<?php
$rsOrder = Order::find(20170214006401)->first()->toArray();
?>

Order模型如下
<?php
use IlluminateDatabaseEloquentSoftDeletes;

class Order extends IlluminateDatabaseEloquentModel {

use SoftDeletes;
protected $dates = ['deleted_at'];
//protected $fillable = ['Order_Status'];
protected  $fillable = array('Order_Status','Is_withdraw','Withdraw_Time');
protected $primaryKey = "Order_ID";
protected $table = "user_order";
public $timestamps = false;

// 多where
public function scopeMultiwhere($query, $arr) {
    if (!is_array($arr)) {
        return $query;
    }

    foreach ($arr as $key => $value) {
        $query = $query->where($key, $value);
    }
    return $query;
}

//无需日期转换

public function getDates() {
    return array();
}

/**
 * 指定时间内的订单
 * @param  $Users_ID 店铺唯一标识
 * @param  $Begin_Time 开始时间
 * @param  $End_Time 结束时间
 * @return array 订单列表
 */
public function ordersBetween($Users_ID, $Begin_Time, $End_Time, $Order_Status) {
    $builder = $this::where('Users_ID', $Users_ID);

    if ($Order_Status != 'all') {
        $builder = $builder->where('Order_Status', $Order_Status);
    }
    
    $builder->whereBetween('Order_CreateTime', [$Begin_Time, $End_Time])
        ->orderBy('Order_CreateTime', 'desc');

    return $builder;
}

}

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
阿神

代码来自:/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php

    public function find($id, $columns = ['*'])
    {
        return $this->where('id', '=', $id)->first($columns);
    }

find方法好像默认为id为主键进行查找的

黄舟

find方法默认搜索的是主键

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号