mysql - larval ORM 模型使用find方法无法准确的查找到对应的数据
问题描述
mysql 数据表主键Order_ID为bigint(20),使用Order模型查找对应的订单却找到了其他的订单。比如:Order:find(20170214006401),却查找到Order_ID为20161009000577的订单.调用代码如下:<?php$rsOrder = Order::find(20170214006401)->first()->toArray();?>
Order模型如下<?phpuse 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;// 多wherepublic 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;}
}
问题解答
回答1:代码来自:/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php
public function find($id, $columns = [’*’]) {return $this->where(’id’, ’=’, $id)->first($columns); }
find方法好像默认为id为主键进行查找的
回答2:find方法默认搜索的是主键
相关文章:
1. python - 关于beautifulsoup获取文档内容2. node.js - ionic2 创建项目 ionic server 报这个错 有朋友可以帮忙看看吗!3. dockerfile - 为什么docker容器启动不了?4. 网页爬虫 - Python小白用Scrapy爬虫返回的是空元素,请问各位大神哪里出了问题?5. mysql里的大表用mycat做水平拆分,是不是要先手动分好,再配置mycat6. debian - docker依赖的aufs-tools源码哪里可以找到啊?7. mysql - 如何在数据库里优化 汉明距离 查询?8. android - java tm platform se binary 占用很多内存9. python flask做的文件系统上传系统,路径没错,文件列表加载不出来,error 1005310. node.js - nodejs连接mysql,输入指令为什么
