所以我想做的就是这个,基本上我有一个叫做游戏的桌子
creator_id
和
guest_id
现在我想要做的是当我想要列出我想加入两张桌子的所有游戏时,例如creator_id
是约翰而guest_id
是玛丽
我想列出所有"游戏"用他们的名字
ID:322 |创作者姓名:John |嘉宾姓名:玛丽
等等,这是我到目前为止所得到的:
控制器:
class AdminController extends Controller
{
public function index()
{
return view('admin.home');
}
public function listGames()
{
$games = Game::get();
return view('admin.games.list', compact('games'));
}
}
查看:
@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
后来我将其添加到游戏模型
public function creator() {
return $this->hasOne(User::class, 'creator_id');
}
public function guest() {
return $this->hasOne(User::class, 'guest_id');
}
这到控制器
public function index() {
$games = Game::with('creator', 'guest')->get();
return view('admin.games.list', compact('games'));
}
并像这样循环
@foreach($games as $game)
Creator: {{ $game->creator->name }}
Guest: {{ $game->guest->name }}
@endforeach
然后发生了这个
SQLSTATE [42S22]:未找到列:1054未知列&#39; users.creator_id&#39;在&#39; where子句&#39; (SQL:select * from users where users.creator_id in(14,15,16)和users.deleted_at为null),我不知道为什么但是我没有在users表中创建createor_id和guest_id,它在游戏表中
答案 0 :(得分:0)
尝试将游戏模型的关系更改为:
public function creator() {
return $this->belongsTo(User::class, 'creator_id');
}
public function guest() {
return $this->belongsTo(User::class, 'guest_id');
}
答案 1 :(得分:0)
你让孩子和父模型混淆了。游戏不会拥有用户 - 他们belongTo()
他们,因为游戏表中包含父母的ID。
反过来说,除非每个用户只能创建或玩一个游戏,否则你应该使用hasMany()
而不是hasOne()
。