Laravel中如何设置find方法通过ID_user字段而非ID查询
Laravel中修改find方法默认匹配字段为ID_user的实现方案
Laravel自带的find()方法默认绑定模型配置的主键字段做等值查询,要改为按ID_user字段匹配,可根据实际业务场景选以下方案:
- 单次查询临时使用,不修改模型全局配置
直接通过条件查询取单条即可,效果和find取单条完全一致:// 常规where写法 $vacation = vacation::where('ID_user', 30)->first(); // 更简洁的firstWhere语法 $vacation = vacation::firstWhere('ID_user', 30); - 全局修改模型默认主键,所有find操作默认走ID_user匹配
如果整个业务里vacation模型的默认查询主键就是ID_user,直接修改模型类的主键配置即可,原有调用find()的业务代码不需要改动:class vacation extends Model { // 指定默认主键字段为ID_user protected $primaryKey = 'ID_user'; // 如果ID_user不是自增整数,需要补充关闭自增的配置 public $incrementing = false; // 字段类型为字符串时才需要配置keyType,数字主键不需要加这行 protected $keyType = 'string'; }
注意:如果
ID_user不是表内唯一字段,上述单条查询方法只会返回符合条件的第一条记录,需要查询该字段匹配的全部数据时请使用get()替代first()。
内容的提问来源于stack exchange,提问作者John-PT
相关产品推荐
相关产品推荐

