【问题标题】:Laravel 4 many to many relationship does not display the related dataLaravel 4多对多关系不显示相关数据
【发布时间】:2013-05-06 20:50:51
【问题描述】:

我正在使用以下模型:Game、User 和 Player,其中 Player 扩展了 User。在这种情况下,Game 和 Player 具有 N:N 的关系,并且 User 扩展了 Confide。所以代码如下:

app/models/Game.php

<?php

class Game extends Eloquent {

    protected $guarded = array();
    protected $table = 'users';
    public $timestamps = false;

    public function players(){
        return $this->belongsToMany('Player');
    }
}

app/models/User.php

<?php

use Zizaco\Confide\ConfideUser;

class User extends ConfideUser {
    protected $table = 'users';
    public $timestamps = false;
    protected $hidden = array('password');

    //Here go original Confide functions
}

app/models/Player.php

<?php

class Player extends User{
    public function games(){
        return $this->belongsToMany('Game');
    }
}

我已经填充了名为 game_player 的数据透视表。当玩家扩展用户时,数据透视表是这样的:

game_player

id
game_id
user_id

但是如果我运行这个超级简单的例子,我会遇到一个错误:

$game = Game::find($gameId);
$player = $game->players();  //Error in this line

错误

Call to undefined method Illuminate\Database\Query\Builder::players()

我很困惑,因为我没有error about pivot table was not found,所以我认为关系创建得很好。

另一方面,如果我 var_dump 我获得的游戏 var:

var_dump($game)

object(Game)[181]
  protected 'table' => string 'games' (length=5)

  //more var info about DB

  protected 'relations' => 
    array (size=0)
      empty
  protected 'hidden' => 
    array (size=0)
      empty
  protected 'visible' => 
    array (size=0)
      empty
  protected 'guarded' =>

如果关系可以很好地创建……关系变量不应该有任何数据吗?

谢谢!

【问题讨论】:

    标签: many-to-many laravel pivot-table laravel-4 eloquent


    【解决方案1】:

    只是指出一些可以解决问题的东西:

    1. 您的 Game.php 表名错误。

    2. 当你得到球员时,这条线应该是:

      $game = Game::with('players')->find($gameId); $player = $game->玩家;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-21
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 2020-06-25
      • 2021-08-25
      • 2014-07-22
      • 1970-01-01
      相关资源
      最近更新 更多