laraveladmin模型关联字段值不完全一致怎么匹配

laraveladmin

2. 问题描述?

public function modelB()  
        { 
            return $this->hasOne(modelB::class, 'ccc', 'ddd'); 
        }

3. 您期望得到的结果?

ddd是modelB的字段,ddd是modelA的字段,需要把他们做关联,
但ccc的值是’123456_订单号’,ddd的值是’123456’,多了’_订单号’,
怎样修改可以完全匹配关联

4. 您实际得到的结果?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

ai 给出了三个方法 方法1:使用whereRaw实现动态截取匹配 public function modelB() { return $this->hasOne(modelB::class, 'ddd', 'ccc') ->whereRaw('SUBSTRING_INDEX(ccc, "_", 1) = modelB.ddd'); } 方法2:添加访问器动态处理

// ModelA中 public function getCccWithoutSuffixAttribute() { return explode('_', $this->ccc)[0]; }

public function modelB() { return $this->hasOne(modelB::class, 'ddd', 'ccc_without_suffix'); }

方法3:数据库层预处理(需MySQL支持) // 迁移文件 $table->string('ccc_prefix')->virtualAs("SUBSTRING_INDEX(ccc, '_', 1)");

//模型 public function modelB() { return $this->hasOne(modelB::class, 'ddd', 'ccc_prefix'); }

方法1可能影响索引使用效率 方法2需要确保访问器逻辑与业务需求一致 如果关联查询频繁,建议使用方法3

16小时前 评论

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