【问题标题】:Cannot union two Joints Laravel不能联合两个关节 Laravel
【发布时间】:2021-09-11 00:45:36
【问题描述】:

我正在尝试合并 2 个连接,但出现奇怪的错误...

我有“客户”-> 表示客户,我得到了他们在订单和新闻中注册的所有客户。

在新闻表中,我得到了 cliente_id -> client_id , 在订单中,我得到了相同的,cliente_id -> client_id,

在新闻中我有 x 个客户,在订单中我有 Y 个客户,他们通常有 99% 的不同,

我希望所有这些客户都出现在订单和新闻中。

所以我做了一个 MYSQL 查询,它可以工作......

SELECT c.nombre, c.apellidos, c.id ,p.id FROM pedidos p
join clientes c on c.id = p.cliente_id
UNION
SELECT c.nombre, c.apellidos, c.id, n.id FROM noticias n
join clientes c on c.id = n.cliente_id

问题是在 LAralvel o 查询生成器中它不起作用。

 $firstSQL = Pedido::select('clientes.nombre','clientes.apellidos','clientes.id', 'pedidos.id')
        ->join('clientes', 'clientes.id', '=', 'pedidos.cliente_id')
        ->get();

 $total = Noticia::select('clientes.nombre','clientes.apellidos','clientes.id', 'noticias.id')
        ->join('clientes', 'clientes.id', '=', 'noticias.cliente_id')
        ->union($firstSQL)
        ->get();

我收到此错误... BadMethodCallException 方法 Illuminate\Database\Eloquent\Collection::getBindings 不存在。

【问题讨论】:

    标签: php mysql laravel join union


    【解决方案1】:

    从第一个查询中删除 get()

     $firstSQL = Pedido::select('clientes.nombre','clientes.apellidos','clientes.id', 'pedidos.id')
            ->join('clientes', 'clientes.id', '=', 'pedidos.cliente_id');
    
     $total = Noticia::select('clientes.nombre','clientes.apellidos','clientes.id', 'noticias.id')
            ->join('clientes', 'clientes.id', '=', 'noticias.cliente_id')
            ->union($firstSQL)
            ->get();
    

    参考:https://laravel.com/docs/8.x/queries#unions

    【讨论】:

      猜你喜欢
      • 2014-10-25
      • 2018-12-11
      • 1970-01-01
      • 1970-01-01
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      • 2017-07-12
      • 2017-02-15
      相关资源
      最近更新 更多