多表关联时怎么使用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 不存在。请问这是因为我的写法有问题,还是别的什么原因呢?对于您的帮助表示十分感谢!
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 2

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

4年前 评论

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

4年前 评论

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