Ich habe Probleme beim Abrufen von Datensätzen aus der Datenbank. Hier ist das Tabellenschema:Laravel verschachtelte Beziehung, wo 5.5 alle Datensätze zurückgeben
users
--------------
id
username
password
email
divisions
--------------
id
name
employee
--------------
name
birth_date
status
class
division_id
user_id
projects
--------------
id
title
body
user_id
Also, für die Beziehung Erklärungen:
Okay, ich versuche Projekt zu holen basierend auf division_id auf dem Tisch Mitarbeiter mit dem folgenden Code:
# query code
$division_id = 10;
$items = Project::with(['user.employee.division' => function($query) use ($division_id) {
$query->where('id', $division_id);
}])->get();
Ich habe die erforderlichen goesOns, hasMany oder hasOne zu den Modellen hinzugefügt.
# User.php
class User extends Authenticatable
{
public function employee()
{
return $this->hasOne('App\Employee', 'user_id');
}
public function projects()
{
return $this->hasMany('App\Project', 'user_id');
}
}
# Division.php
class Division extends Model
{
public function employee()
{
return $this->hasMany('App\Employee', 'division_id');
}
}
# Employee
class Employee extends Model
{
public function user()
{
return $this->belongsTo('App\User', 'user_id');
}
public function division()
{
return $this->belongsTo('App\Division', 'division_id');
}
}
# Project.php
class Project extends Model
{
public function user()
{
return $this->belongsTo('App\User', 'user_id');
}
}
Also, was ist das Problem?
Hier ist die Sache, wenn ich den Abfragecode ausführen, bekomme ich alle Datensätze und die Division Objekt auf Employee-Beziehung Null zurückgibt.
Wenn jemand denkt, dass mein Code falsch ist, bitte erleuchte mich.
Danke.
Welche Ausgabe, die Sie erwarten sind, wie es mir heißt es geben alle Benutzer und ihre Projekte unter Teilung 10. –
Wenn ich die Abfrage Code ausführen, where-Klausel für division_id hat nicht funktioniert. Das Ergebnis ist die Rückgabe von Benutzern und ihren Projekten in allen Bereichen, ohne gefiltert zu werden. Ist es möglich, weil die Umwelt? – DefaultB2