多表关联时怎么使用INSTR函数代替like查询?

//    只有一张表时以下语句可以正常查询
Test::whereRaw("INSRT(mobile, '1111') > 7")->select('id', 'mobile)->get();
//    以上sql语句是:SELECT id, mobile FROM test WHERE INSTR(mobile, '1111') > 7;
//    但是现在的业务逻辑是多表关联,这个时候如果加入INSTR之后SQL语句就报错了,写法如下:
$res = Test::whereRaw("INSRT(`test.mobile`, '1111') > 7")
    ->leftJoin('address', 'test.address_id', '=', 'address.id')
    ->select('test.id', 'test.mobile', 'address.address_name')
    ->get();
    报错:test.mobile 不存在。请问这是因为我的写法有问题,还是别的什么原因呢?对于您的帮助表示十分感谢!
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 2

看一下sql,表名是否对应!

3年前 评论

@Imuyu 表名没有问题,加上字段前缀就报错了,像是INSTR不支持 table.field这种写法一样。

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!