代码之家  ›  专栏  ›  技术社区  ›  user2197774

在Laravel查询Bulider中使用And子句

  •  0
  • user2197774  · 技术社区  · 7 年前

        SELECT
      customers.CustCompanyName,
      addresses.AddressLine1,
      orders.*
    FROM orders
      INNER JOIN customers
        ON orders.CustID = customers.CustID
      INNER JOIN customer_addresses
        ON customer_addresses.CustID = customers.CustID
      INNER JOIN addresses
        ON customer_addresses.AddressID = addresses.AddressID
        AND orders.CustAddID = customer_addresses.CustAd
    

    $orders = DB::table('orders')
            ->join('customers', 'orders.CustID', '=', 'customers.CustID')
            ->join('customer_addresses','customer_addresses.CustID', '=' , 'customers.CustID' )
            ->join('addresses','customer_addresses.AddressID','=','addresses.AddressID')->AND
    

    1 回复  |  直到 7 年前
        1
  •  0
  •   Marcin Nabiałek    7 年前

    适用于:

    INNER JOIN addresses
       ON customer_addresses.AddressID = addresses.AddressID
       AND orders.CustAddID = customer_addresses.CustAd
    

    您应该使用:

    ->join('addresses', function($join) {
       $join->on('customer_addresses.AddressID', '=', 'addresses.AddressID')
       ->whereRaw('orders.CustAddID = customer_addresses.CustAd');
    });
    

    你也可以看看 Joins in Query Builder