我想通过关系的列(“ orders.number”)对查询(从revenues
表进行排序)。一个订单有很多收入。问题在于收入和订单都共享一个公用列(description
),这会导致对where()
进行过滤时产生歧义。我知道我可以在过滤时指定表,但是这里的问题是我正在使用全局作用域,该作用域通过配置文件中的预设列对查询进行排序,description
是其中之一。我以前不知道表名,将它作为参数发送给函数似乎对我来说太过分了。
$revenues = App\Revenue::
with('order.client', 'order.place')
->sessionSearch('revenues')
->orderBy('created_at', 'desc')
->join('orders', 'orders.id', '=', 'revenues.order_id')
->select('revenues.*', 'orders.number as order_number')
->orderBy('order_number', 'desc')
->paginate(perPage());
我尝试在sessionSearch()
方法中动态添加表名,但是由于它受到保护,因此无法通过传递的Builder
实例来访问它。
我还认为,通过执行leftJoin
mysql可以知道哪个主表是我的主表,并且大概是针对它的列的,但是模糊性仍然是一个问题。
有没有一种方法可以在我的sql设置中默认设置一个有利的表,以免引起歧义?基本上我只需要订单表中的数字,但是仍然会产生歧义错误。
在此先感谢您的帮助!