2016-11-16 103 views
1

我有三個表,其中有許多對多種關係 表名:notes(id,user_id,card_id,body),用戶(id,name,password,.. 。),卡(ID,cardname,cardText) 現在我想用預先加載,以獲得相關的用戶名 我有這樣表示此處爲三個型號:渴望加載返回null對一對多關係

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Card extends Model 
{ 
    /*public $table= 'Fake';*/ 
    public $timestamps = false; 
    public function notes() 
    { 
     return $this->hasMany(Note::class); 
    } 
} 

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Note extends Model 
{ 

    public $timestamps = false; 
    public function cards() 
    { 
     return $this->belongsTo(Card::class); 
    } 

    public function users() 
    { 
     return $this->belongsTo(User::class); 
    } 
} 

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class User extends Model 
{ 
    public $timestamps = false; 
    public function notes() 
    { 
     return $this->hasMany(Note::class); 
    } 

} 

,並在我的路線,我用以下內容:

<?php 

use App\Card; 
Route::get('/', function() { 
    $card=new Card(); 
    $card->id=1; 
    $card->load('notes.users')->all(); 
    return $card; 
}); 

但我不知道爲什麼我得到nu LL在用戶JSON: JSON文件:

{ 
id: 1, 
notes: [ 
{ 
id: 1, 
card_id: 1, 
user_id: 1, 
body: "Hussein Jafari", 
users: null 
}, 
{ 
id: 2, 
card_id: 1, 
user_id: 1, 
body: "Ammpeaa", 
users: null 
}, 
{ 
id: 12, 
card_id: 1, 
user_id: 1, 
body: "KAIRIMI SANJABI", 
users: null 
}, 
{ 
id: 13, 
card_id: 1, 
user_id: 1, 
body: "MOAHAHS KASK KSK", 
users: null 
}, 
{ 
id: 14, 
card_id: 1, 
user_id: 1, 
body: "bENAJAJ KSAK KS", 
users: null 
} 
] 
} 

回答

2

你可以改變你的關係在Note類爲:

public function users() 
{ 
    return $this->belongsTo(User::class, 'user_id', id); 
} 

這是因爲雄辯通過檢查的名稱確定默認外鍵名關係方法和後綴方法名稱_id

但在你的情況下,它正在尋找users_id列。

OR

您可以更改關係的名稱爲:

public function user() 
{ 
    return $this->belongsTo(User::class); 
} 

然後急切負荷:

$card->load('notes.user')->all(); 

Docs

+0

感謝重播,我做到了,但我仍然像上面的json一樣獲得用戶爲null。沒有什麼不同 – Sandro

+0

然後確保在你的數據庫中有'id' 1的用戶。 –

+0

db中的用戶標識是1,2,3,並且它們全都在筆記表中有記錄,但是爲什麼你說有id的用戶我們沒有提到用戶在我們的查詢中我們只是想要用戶哪個註冊卡的id爲1,相關說明 – Sandro