2017-07-07 9 views
0

Ich habe eine Situation, wo mehrere Tabellen eine belongsTo Beziehung zu einer Kategorie Tabelle in laravel 5.4 haben. SoLaravel Morph gehört zu?

dachte ich über diese Struktur:

Benutzer Tabelle:

id 
name 
email 
category_id <-- 

Kategorie Tabelle

id 
model_type 
name 

Ist dies möglich, mit einer morph Beziehung?

Antwort

1

Dies wäre nicht seit model_type ist nur eine Einschränkung, welche Kategorien für welche Modelle verfügbar sind. Wenn man es so einrichten würden Sie die Einschränkung des auf jedes Modell hinzufügen Beziehung wie:

class User extends Model 
{ 
    // User class 

    public function category() 
    { 
     return $this->belongsTo(Category::class)->where('model_type', '=', static::class); 
    } 
} 

Oder weil Sie viele Modelle haben, die Category gehören Sie, dass ein Schritt weiter gehen könnten und ein Merkmal für die Beziehung verwenden und Legen Sie das Merkmal auf jedes Modell, das zu Category gehört:

trait BelongsToCategory() 
{ 
    public function category() 
    { 
     return $this->belongsTo(Category::class)->where('model_type', '=', static::class); 
    } 
} 

class User extends Model 
{ 
    use BelongsToCategory; 

    // User class 
}