Laravel Eloquent LINKS VERBINDEN WO NULL
Ich versuche, Eloquent, führen Sie die folgende Abfrage aus, während eine Datenbank-Samen:
SELECT
*
FROM
customers
LEFT JOIN
orders
ON customers.id = orders.customer_id
WHERE
orders.customer_id IS NULL
Und hier ist meine Umsetzung in Eloquenter:
$c = Customer::leftJoin('orders', function($join) {
$join->on('customers.id', '=', 'orders.customer_id');
})
->whereNull('orders.customer_id')
->first();
In der Erwägung, dass die erste Abfrage gibt alle Ergebnisse, die Beredt äquivalent gibt immer leerer Elemente für alles, aber die email
und phone
Felder der customers
Tabelle. Ich bin an einem Verlust zu erklären, da die Customers
und Orders
Modelle sind sowohl handwerklich erzeugten Skelette.
Ex:
class Customer extends \Eloquent {
//Add your validation rules here
public static $rules = [
//'title' => 'required'
];
//Don't forget to fill this array
protected $fillable = [];
}
Hier ist der array, der ausgegeben wird, wenn ich dd() die erste Eloquent Abfrage auf ein samenkorn (generiert, das ursprünglich von Faker):
protected $original =>
array(25) {
'id' =>
NULL
'first_name' =>
NULL
'last_name' =>
NULL
'email' =>
string(24) "[email protected]"
'phone' =>
string(17) "642.150.9176x5684"
'address1' =>
NULL
'address2' =>
NULL
'city' =>
NULL
'state' =>
NULL
'county' =>
NULL
'district' =>
NULL
'postal_code' =>
NULL
'country' =>
NULL
'notes' =>
NULL
'created_at' =>
NULL
'updated_at' =>
NULL
'customer_id' =>
NULL
'total' =>
NULL
}
Kommentar zu dem Problem
Dieser code läuft genau die gleiche Abfrage als SQL
InformationsquelleAutor der Frage eComEvo | 2014-04-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieses Problem kann behoben werden, durch die Angabe der spezifischen gewünschten Spaltennamen aus der Tabelle etwa so:
InformationsquelleAutor der Antwort eComEvo
Ich würde dump Ihrer Abfrage können Sie einen Blick auf die SQL-das war tatsächlich ausgeführt, und zu sehen, wie, das unterscheidet sich von dem, was du geschrieben hast.
Sollten Sie in der Lage, das zu tun, mit dem folgenden code:
Hoffentlich das sollte Ihnen genügend Informationen, um Ihnen zu erlauben, um herauszufinden, was schief gegangen ist.
InformationsquelleAutor der Antwort Matthew Daly
Können Sie auch die Spalten in einer select-etwa so:
InformationsquelleAutor der Antwort Ioana Cucuruzan