我想做的是查询主表存在于另一个子表的最新一条记录,$this->yuyue是主表,$this->model是子表有主表的多条记录,查询倒是查出来了,但是我想加个搜索条件就不行了,总提示不存在y_uid这个字段,我也很是纳闷不知道怎么回事,哪位帮忙看下,谢谢了!。
```php
if (!empty(!$param['y_uid'])) {
$where['y_uid'] = $param['y_uid'];
}
if (!empty($param['searchStart'] && !empty($param['searchEnd']))) {
$where['y_sf_addtime'] = [['egt', strtotime($param['searchStart'] . "00:00:00")], ['elt', strtotime($param['searchEnd'] . "23:59:59")], 'and'];
}
$huifangs = $this->model
->order('y_sf_addtime', 'desc')
->limit(10000) //不加有可能获取的不是最新的一条
->buildSql();
$selectResult = $this->yuyue->alias('a')
->join([$huifangs => 'b'], 'b.yyid = a.id', 'LEFT')
->where($where)
->where(['b.yyid' => ['neq','null'], 'b.y_tag' => ['in','1,2,3']])
->field('a.id,a.y_name,a.y_sex,a.y_age,a.y_did,a.y_province,a.y_city,a.y_mzh,b.y_sf_addtime,b.y_sfnrbc,b.id as bid,b.y_hzsq,b.yyid,b.y_nextsfsj,b.y_uid')
->group('a.id')
->limit($offset, $limit)
->order('b.y_sf_addtime desc')
->select();
```
根据您提供的代码,问题可能出在以下几个地方:
$param['y_uid'] 字段不存在:请确保 $param['y_uid'] 字段的存在和正确性。您可以打印 $param 数组,检查是否包含了 y_uid 字段。
$this->yuyue 模型中不存在 y_uid 字段:您可以检查 $this->yuyue 模型中是否包含了 y_uid 字段。如果没有该字段,请确认字段名是否拼写正确或是您可能需要修改为正确的字段名。
$where 数组的键名 'y_uid' 错误:请确保 y_uid 是 $this->yuyue 模型中的字段名,与数据库表结构一致。如果不一致,请将键名修改为正确的字段名。
【以下回答由 GPT 生成】
看起来你的代码中有一个问题,就是子表的别名 b
没有正确指定与 y_uid
的关联。你可以尝试修改下面这行代码:
$selectResult = $this->yuyue->alias('a')
->join([$huifangs => 'b'], 'b.yyid = a.id', 'LEFT')
修改为:
$selectResult = $this->yuyue->alias('a')
->join([$huifangs => 'b'], 'b.yyid = a.id', 'LEFT')
->join([$huifangs => 'c'], 'c.y_uid = a.y_uid', 'LEFT')
这样,你在 where
条件中就可以使用 c.y_uid
了。
修改后的代码如下所示:
if (!empty($param['y_uid'])) {
$where['c.y_uid'] = $param['y_uid'];
}
$huifangs = $this->model
->order('y_sf_addtime', 'desc')
->limit(10000)
->buildSql();
$selectResult = $this->yuyue->alias('a')
->join([$huifangs => 'b'], 'b.yyid = a.id', 'LEFT')
->join([$huifangs => 'c'], 'c.y_uid = a.y_uid', 'LEFT')
->where($where)
->where(['b.yyid' => ['neq', 'null'], 'b.y_tag' => ['in', '1,2,3']])
->field('a.id,a.y_name,a.y_sex,a.y_age,a.y_did,a.y_province,a.y_city,a.y_mzh,b.y_sf_addtime,b.y_sfnrbc,b.id as bid,b.y_hzsq,b.yyid,b.y_nextsfsj,b.y_uid')
->group('a.id')
->limit($offset, $limit)
->order('b.y_sf_addtime desc')
->select();
希望这对你有所帮助!如果你还有其他问题,请随时提问。