我有一个带有“ nick_name”列的“用户”表。
我还有另一个表'nick_name_master',其中有列:-ID,标题,图标。
理想情况下,与'user'和'nick_name_master'没有直接关系。因此,我无法使用联接获取nick_name_master.icon。
nick_name_master.title的值如下:-猫,狗,兔子等。
通过采用nick_name_master.title之一并附加一些随机数字(1-999)来设置user.nickname。
user.nick_name看起来像这样:-Rabbit514,Toucan12,Cat210等。
我想使用user.nick_name来获取nick_name_master.icon
当前代码正在使用这样的
foreach($posts as $post){
$nick_name = $post->user->nick_name;
$letters = preg_replace('/[^a-zA-Z]/', '', $nick_name);
$nickname = resolve('nick-name')->getByTitle($letters);
}
getByTitle()是这个
public function getByTitle($title)
{
return $this->nickname->select('icon')->where('title',$title)->first();
}
由于我的$ post变量具有另一个数据,并且我要按10条记录对它进行分页,因此我面临n + 1个问题。 因此,我想在计算$ post时添加此查询。
$listing = $this->question
->leftjoin('users as u', function ($join) {
$join->on('questions.user_id','u.id')
->where('u.deleted_at',NULL);
})
->select('questions.id','user_id','questions.title','u.full_name')
->groupBy('questions.id')
->where('questions.is_active','Y')
->where('questions.is_reported','N');
return $listing;
这是从$ post查询中提取的查询的一部分。
是否有可能加入用户表和nick_name_master表?
或者只是使用select DB Raw选择nick_name_master.icon也可以。
我已经在select中尝试了这段代码(我知道这是错误的,我对DB原始查询没有太多经验)
DB::raw("select * from nick_name_master as nm where nm.title LIKE +'%'+u.nick_name+'%'")
任何帮助将不胜感激。谢谢!