0
我有兩張表 - 兩者都是遺留的。Laravel 5.4雄辯關係不太對
一張桌子,國家,剛剛v領域:
entry (index field)
Countryname
Abbrev
我的另一臺是PCustomers它(其中包括)具有
Reference (index field)
country (the foreign key)
我有兩個模型建立:
class Countries extends Model
{
protected $table="Countries";
protected $primaryKey = 'entry';
function pcustomer()
{
return $this->hasMany('App\PCustomer','country','entry');
}
}
and
class PCustomer extends Model
{
protected $table = 'p_customers';
protected $primaryKey = 'Reference';
public function country()
{
return $this->hasOne('App\Countries','entry','country');
}
public function addnew(Request $request)
{
}
}
要嘗試了這一點,我放在一個控制器:
public function PCustomers()
{
$customer = PCustomer::find(5955)->country;
dd($customer);
}
我知道5955存在,它的國家是74
的DD返回74,但沒有別的。
如果我把國家,所以它成爲
$customer = PCustomer::find(5955);
我得到通常和正確的收集與全域。
我認爲應該發生的是 - >國家,我會得到記錄的細節加上3場來自全國各地,而不僅僅是74
幫助讚賞!
我發現我可以用下面的行得到這樣的: '$客戶= PCustomer :: where('Reference',5955) - > with('country') - > get();' 但這似乎與文檔不一致。 – Jim
不,如果你做' - >國家',那麼只有國家記錄將被退回。這是預期的行爲。你的解決方案是正確的,只不過你最好用'first()'替換'get()',因爲你只需要一條記錄。當然,你可以堅持你所做的,但它會返回一個[集合](https://laravel.com/docs/5.4/eloquent-collections)而不是記錄。 – Fahmi