2017-07-05 2 views
1

Also, was ich versuche, dies zu tun ist, im Grunde habe ich eine Tabelle namens Spiele, dieBeziehungen mit 2 Zeilen und Benutzer-ID

creator_id und guest_id

jetzt hat, was ich tun möchte, ist wenn ich alle Spiele auflisten möchten möchte ich zwei Tabellen verbinden und zum Beispiel, wenn creator_id John und guest_id ist Mary

ich alle „Spiele“ auflisten möchten mit ihren Namen

ID: 322 | Name des Schöpfers: John | Gastname: Mary

und so weiter, das ist, was ich bisher habe:

Controller:

class AdminController extends Controller 
{ 
    public function index() 
    { 
     return view('admin.home'); 
    } 

    public function listGames() 
    { 
     $games = Game::get(); 
     return view('admin.games.list', compact('games')); 
    } 
} 

Ausblick:

@extends('admin.content') 

@section('title', 'List games') 

@section('content') 

<table class="table table-hover"> 

@foreach($games as $game) 

// now i want to list that here 

@endforeach 
</table> 

@endsection 

Später fügte ich hinzu, dies zu Spielmodell

public function creator() { 
    return $this->hasOne(User::class, 'creator_id'); 
} 

public function guest() { 
    return $this->hasOne(User::class, 'guest_id'); 
} 

diese

public function index() { 
    $games = Game::with('creator', 'guest')->get(); 
    return view('admin.games.list', compact('games')); 
} 

und geschleift ähnliche

@foreach($games as $game) 
    Creator: {{ $game->creator->name }} 
    Guest: {{ $game->guest->name }} 
@endforeach 

an die Steuerung aber dann trat diese

SQLSTATE [42S22]: Column nicht gefunden: 1054 Unknown column 'users.creator_id' in ' where-Klausel '(SQL: Wählen Sie * von Benutzern aus, in denen users.creator_id in (14, 15, 16) und users.deleted_at null ist), ich weiß nicht warum, aber ich habe creator_id und guest_id nicht in der user-Tabelle, in der Spieltabelle

Antwort

0

Versuchen Sie, die Beziehung des Spiels Modell zu ändern:

das Kind
public function creator() { 
    return $this->belongsTo(User::class, 'creator_id'); 
} 

public function guest() { 
    return $this->belongsTo(User::class, 'guest_id'); 
} 
0

Sie sind verwirrend und das übergeordnete Modell. Die Spiele haben keine Benutzer - sie belongTo() sie, da die Spieltabelle die IDs der Eltern enthalten.

Und für die Umkehrung, wenn jeder Benutzer nur ein Spiel erstellen oder spielen kann, sollten Sie hasMany() statt hasOne() verwenden.

Verwandte Themen