2017-03-11 3 views
1

Ich habe zwei Tabellen die Beiträge Tabelle und die Kategorien Tabelle.Laravel eins zu eins Beziehung ohne Fremdschlüssel

Jeder Beitrag hat nur eine Kategorie.

Was ich versuche, ohne einen Fremdschlüssel mit einer Kategorie-ID

Connect, alle Beiträge zu tun.

Warum Ich versuche, diese

zu tun, weil ich in jeder will ich nicht dupliziert wollen die Kategorie Wort schreiben Sie einfach die Kategorie-ID duplizieren.

PostsController.php Code

$posts = Post::orderBy('id', 'DESC') -> limit(16) -> get(); 

@foreach($posts as $post) 

dd($post -> categories() -> cat); 

@endforeach 

Posts.php Modellcode

class Post extends Model 
{ 
    public function category() { 
     return $this->hasOne('App\Category'); 
    } 
} 

Problem

Ich bekomme Fehler, fragen Sie mich nach Fremdschlüssel, während ich keinen Fremdschlüssel in der Kategorien-Tabelle habe.

+0

Was ist Ihre Frage/Problem? – Hammerbot

+0

@El_Matella bearbeitet – user7431257

+0

Ich denke, das ist unmöglich, Sie können keine Beziehung ohne einen Fremdschlüssel haben ... Wenn es keinen Fremdschlüssel gibt dann gibt es keine Beziehung ... jemand korrigiert mich, wenn ich falsch liege – lewis4u

Antwort

0

Relation sollte belongsTo() sein:

public function category() { 
    return $this->belongsTo('App\Category'); 
} 

Und die posts Tabelle sollte category_id sowieso haben, damit es funktioniert, aber Sie es ohne foreign key constraint verwenden können.

+0

Hallo Alexey , Ich respektiere dich am meisten von allen anderen Laravel-Experten hier auf SO, also eine einfache Frage, wenn Sie 2 Modelle haben, denke ich, dass es nicht möglich ist, eine Beziehung zwischen ihnen ohne einen Fremdschlüssel zu haben ... Ich meine, das ist das Grundprinzip von Beziehungsdatenbanken. Kein Fremdschlüssel == keine Beziehung? Sind Sie einverstanden? – lewis4u

+0

@ lewis4u ja, ich stimme zu, wie ich in meiner Antwort gesagt habe, müssen Sie einen Schlüssel wie 'category_id' trotzdem verwenden. Sie können jedoch die Beziehung verwenden, ohne [Fremdschlüsseleinschränkungen] zu definieren (https://laravel.com/docs/5.4/migrations#foreign-key-constraints). –