ThinkPHP模型(Model)中双表查询注意点

表结构

goods表

字段名说明
goods_id主键
goods_name商品名称

category表

字段名说明
category_id主键名称
category_name分类名称

sql语句

select c.cate_name,c.cate_id,g.goods_id
from goods as g,category as c
where c.cate_id=g.cate_id and g.supplier_id={$supplier_id};

其中的supplier_id是额外传入的参数。

情况分析

然后我在TP的Model中写了下面的筛选条件:

$table=array(
    'goods'=>'g',
    'category'=>'c'
);
$field=array(
    'c.cate_id',
    'c.cate_name',
    'g.goods_id'
);
// 这里就被坑了!!!
$where=array(
    'g.cate_id'=>'c.cate_id',
    'g.supplier_id'=>$supplier_id
);
$cateInfo=$this->table($table)->field($field)->where($where)->select();

然后就是查不到数据,之后我就很崩溃啊,直接把sql语句打印出来看,跟上面的机构是一样的,就是多了几个单引号和双引号而已,而且把单引号和双引号去掉之后,拿到MySQL命令行中去运行,也是能得出数据的,这时真的是崩溃+崩溃,后来虽然不知道原因在哪里,但是也修改过来了:

$where_sql="c.cate_id=g.cate_id and g.supplier_id={$supplier_id}";

直接写SQL语句,不要使用数组形式!这样至少在我的电脑上读取的值是正确的。鬼畜啊!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值