2017-02-10 16 views
0

私はCharacterテーブルとAccountテーブルとの関係を作成しようとしていますが、belongsTo()メソッドを追加すると、Accountのデータは表示されません。belongsTo()関数が動作しません

だからこれは私のキャラクターモデルである:

class Character extends Model 
{ 
    //Get players by level 
    public function scopeGetPlayersByLevel($query){ 
     return $query->orderBy('level', 'desc')->get(); 
    } 

    //Get players by zulie 
    public function scopeGetPlayersByZulie($query){ 
     return $query->orderBy('zuly', 'desc')->get(); 
    } 

    //Get online status 
    public function account(){ 
     return $this->belongsTo(Account::class, 'username', 'account_name'); 
    } 
} 

アカウントモデル:

class Account extends Model 
{ 
    //Get online players 
    public function scopeGetOnlinePlayers($query){ 
     return $query->where('online', 1); 
    } 

    //Get online staff 
    public function scopeGetOnlineStaff($query){ 
     return $query->where('online', 1)->where('accesslevel', 350); 
    } 

    public function characters(){ 
     return $this->hasMany(Character::class, 'account_name', 'username'); 
    } 
} 

そして、私はこのように私のコントローラに変数を追加します。

使用のApp \文字。

class RankingController extends Controller 
{ 
    function index(){ 
     $players = Character::find(100); 
     return $players; 
    } 
} 

表構造:

accounts: 
    - username 

characters: 
    - account_name //foreign key 

$playersの結果は、文字データだけです。アカウントデータがそれに追加されないのはなぜですか?

答えて

1

あなたがしようとしていることがわかっているのは、プレーヤーとそのすべてのキャラクターを手に入れようとしていることです。

$caracter = Character::find(1); 
return $caracter->account; 
+0

実はそれは周りの他の方法ですが。私はキャラクターのアカウントを見つけようとしています –

+0

更新のための私の編集を参照してください – EddyTheDove

+0

ありがとうございます。私は 'return $ character'はアカウントオブジェクトがその中にあることを示していると思いました。それがなぜそうでないのかについての考えはありますか? –

1

文字のアカウントを見つけ

function index(){ 
    $player = Account::find(1); 
    return $player->characters; 
} 

を試してみてください、このお試しください:

//Get online status 
    public function account(){ 
     return $this->belongsTo(Account::class, 'account_name', 'username'); 
    } 
+0

これはうまくいきません –

+1

"ありがとうございました。返された$文字は、アカウントオブジェクトがその内部にあることを示していると思いました。この場合、$ caracter = Character :: find(1) - > with( 'account');を使用します。 –

関連する問題