2016-06-17 3 views
0

Ich habe Tabelle orders und Tabelle payments. Ich möchte Tabelle orders abfragen, Tabelle payments beitreten und mit einer Bestellung anzeigen, die bezahlt wird und welche nicht.Abfrage zwei Tabellen mit Laravel und zwei WHERE Bedingungen

Dies ist Auftragsmodell

class Order extends Eloquent { 
    protected $table = 'orders'; 
    protected $primaryKey = 'order_id'; 

    public function paidorders() { 
     return $this->hasMany('payments', 'processed'); 
    } 
} 

Dies ist Zahlungsmodell

class Payment extends Eloquent { 
    protected $table = 'payments'; 
    protected $primaryKey = 'paymentID'; 

    public function orders() 
    { 
     return $this->hasMany('Order', 'user_id'); 
    } 
} 

Und die User-Modell

public function orders() { 
    return $this->hasMany('Order', 'user_id'); 
} 

Dies ist, wie ich nur ohne Status zur Zeit Aufträge zeigen bezahlt/nicht bezahlt.

$orders = self::$user->orders()->get(); 
    return View::make('site.users.orders', [ 
     'orders' => $orders 
    ]); 

Dies ist die Abfrage, aber ich weiß nicht, wie es

SELECT orders. * , payments. * 
FROM orders 
    INNER JOIN payments ON orders.user_id = payments.userID 
WHERE orders.user_id =2 
AND payments.userID =2 

self::$user->... ist der angemeldete Benutzer in Laravel zu implementieren. Wie wird dies in der WHERE Klausel verwendet werden?

Ich verstehe es nicht genau, wie diese Abfrage

UPDATE dd($orders)

object(Illuminate\Database\Eloquent\Collection)#264 (1) { ["items":protected]=> array(1) { [0]=> object(Order)#260 (20) { ["table":protected]=> string(6) "orders" ["primaryKey":protected]=> string(8) "order_id" ["connection":protected]=> NULL ["perPage":protected]=> int(15) ["incrementing"]=> bool(true) ["timestamps"]=> bool(true) ["attributes":protected]=> array(1) { ["processed"]=> string(1) "1" } ["original":protected]=> array(1) { ["processed"]=> string(1) "1" } ["relations":protected]=> array(0) { } ["hidden":protected]=> array(0) { } ["visible":protected]=> array(0) { } ["appends":protected]=> array(0) { } ["fillable":protected]=> array(0) { } ["guarded":protected]=> array(1) { [0]=> string(1) "*" } ["dates":protected]=> array(0) { } ["touches":protected]=> array(0) { } ["observables":protected]=> array(0) { } ["with":protected]=> array(0) { } ["morphClass":protected]=> NULL ["exists"]=> bool(true) } } } 
+0

Zahlung viele Aufträge zu bauen hat? sollte das nicht der Ordnung gehören? –

+0

Kann ja sein .. Aber immer noch bin ich nicht sehr gut in Laravel und verstehe nicht, wie man die Abfrage –

Antwort

1
$query = Order::select(DB::Raw('payments.processed')) 
    ->join('payments', 'orders.order_id', '=', 'payments.orderID') 
    ->where('orders.user_id', 2) 
    ->where('payments.userID', 2) 
    ->get(); 
+0

Dump dd ($ Aufträge) und als Ergebnis –

+0

Ich habe Dump von Aufträgen hinzugefügt. Ich kann '[" processed "] => string (1)" 1 "' im Dump sehen, welches der Wert in der Datenbank ist –

+0

Bitte teilen Sie das volle Dump-Ergebnis –

3
Try this query code:- 

$users = DB::table('orders') 
      ->join('payments', 'orders.user_id', '=', 'payments.userID') 
      ->where('orders.user_id', '2') 
      ->where('payments.userID', '2') 
      ->select('orders.*', 'payments.*') 
      ->get(); 
+0

Ich glaube, op will Eloquent verwenden –

+0

Ja, und mit diesem habe ich "Call to undefined Methode stdClass :: getOrderData() '' –

+0

Kannst du bitte versuchen mit dieser Abfrage ............. –