Laravel 两表关联查询 | Laravel China 社区

问题描述:

两表关联 商品表,关联库存表, 现 库存表 反向关联商品表,查询商品名字,但会查询出很多为空的数据
未使用查询条件结果如图

模型关联代码如下:

class GoodsSpec extends Model
    {
        protected $guarded = [];
        protected $table = 'g_specification';

        // 商品模型关联商品表
        public function goods(){
            return $this->belongsTo(Goods::class,'g_product_id','product_id');
        }
    }

查询代码如下

// 商品库存日志
class GoodsStockLogController extends Controller
{
    use LayuiTableController;
    public function lists(Request $request){
        DB::connection()->enableQueryLog();#开启执行日志
        $dd =  GoodsSpec::with(['goods' => function($query) use($request){
            if ($request->has('search.name')){
                $query->where('name', $request->search['name'] )->select('name','product_id');
            }else{
                $query->select('name','product_id');
            }
        }])
            ->offset($this->params($request))
            ->limit($request->limit)
            ->get()->toArray();

//        dd(DB::getQueryLog());
//        dd($dd);
        $count =  GoodsSpec::with(['goods' => function($query) use($request){
            if ($request->has('search.name')){
                $query->where('name', $request->search['name'] );
            }
        }])->count();

        return asTableData($dd,$count);
    }
}

期望的查询结果:

现在查询结果 会出现 图中 X 掉的 数据,如果用 DB 查询是可以获取到预期答案,但是享受不到验证器的便利...
谢谢大家的帮助

表结构

(0)

相关推荐