1 回答

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊
根據(jù)您的意見進(jìn)行更新
似乎您在國(guó)家/地區(qū)和鄉(xiāng)村價(jià)格之間有一對(duì)一的關(guān)系。它可以理解如下:“一個(gè)國(guó)家有一個(gè)國(guó)家價(jià)格,每個(gè)國(guó)家價(jià)格屬于一個(gè)且只有一個(gè)國(guó)家”。
該關(guān)系可以通過(guò)以下方式建立:國(guó)家模型
public function countryPrice()
{
return $this->hasOne(CountryPrice::class);
}
國(guó)家價(jià)格模型
public function country()
{
return $this->belongsTo(Country::class);
}
然后相應(yīng)地更新 nova 實(shí)體:國(guó)家/地區(qū)資源
public function fields(Request $request)
{
return [
// ...
HasOne::make('Country Prices'),
// ...
];
}
國(guó)家價(jià)格資源
public function fields(Request $request)
{
return [
// ...
BelongsTo::make('Country'),
// ...
];
}
然后在國(guó)家/地區(qū) nova 資源中指定標(biāo)題屬性,如我在舊答案中在下面解釋的那樣:
/**
* The single value that should be used to represent the resource when being displayed.
*
* @var string
*/
public static $title = 'name';
生成的系統(tǒng)將允許您在從 nova 界面創(chuàng)建國(guó)家/地區(qū)價(jià)格記錄時(shí)從選擇框中選擇單個(gè)國(guó)家/地區(qū)。在國(guó)家/地區(qū) nova 指數(shù)中,您還將看到每個(gè)國(guó)家/地區(qū)及其指定的價(jià)格。
我希望這是你需要的正確行為。如果不正確,請(qǐng)告訴我,我會(huì)在Stack Overflow上打開一個(gè)聊天,以便我們可以準(zhǔn)確地整理出您需要的內(nèi)容并解決問(wèn)題。
下面的舊答案
修復(fù)關(guān)系
我認(rèn)為你們的關(guān)系設(shè)置錯(cuò)了。從您發(fā)布的表架構(gòu)來(lái)看,看起來(lái)每個(gè)架構(gòu)都可以有很多,因?yàn)槟鷮⒘蟹旁?.CountryCountryPricecountry_idcountry_prices
因此,如果“國(guó)家/地區(qū)具有多個(gè)國(guó)家/地區(qū)價(jià)格”,則“每個(gè)國(guó)家/地區(qū)價(jià)格屬于一個(gè)國(guó)家/地區(qū)”。
如果我誤解了你們的關(guān)系,請(qǐng)?jiān)谠u(píng)論中告訴我正確的關(guān)系,我會(huì)修復(fù)我的答案。
您可以按如下方式設(shè)置這兩個(gè)關(guān)系:
國(guó)家模式
public function countryPrices()
{
return $this->hasMany(CountryPrice::class);
}
國(guó)家價(jià)格模型
public function country()
{
return $this->belongsTo(Country::class);
}
然后更新兩個(gè) Nova 資源以匹配新的關(guān)系:
國(guó)家資源
public function fields(Request $request)
{
return [
// ...
HasMany::make('Country Prices'),
// ...
];
}
國(guó)家價(jià)格資源
public function fields(Request $request)
{
return [
// ...
BelongsTo::make('Country'),
// ...
];
}
解釋當(dāng)前異常
應(yīng)用\國(guó)家/地區(qū)價(jià)格::獲取國(guó)家/地區(qū)名稱必須返回關(guān)系實(shí)例
您收到的錯(cuò)誤與Nova本身無(wú)關(guān)。發(fā)生這種情況是因?yàn)槟P椭卸x的每個(gè)(非靜態(tài))方法都應(yīng)該是查詢范圍、模型訪問(wèn)器/賦值器或關(guān)系。
這意味著,如果定義 ,它將被視為關(guān)系,并且需要返回關(guān)系實(shí)例,但您將返回一個(gè)字符串。getCountryName
在您的用例中,您實(shí)際上并不需要定義訪問(wèn)器。您可以使用:
$countryPrice->country->name
在實(shí)例上。CountryPrice
修復(fù)顯示標(biāo)題
要修復(fù)資源上的選擇輸入中顯示的選項(xiàng),您必須定義一個(gè)屬性或方法,該屬性或方法將在您鏈接到的 Nova Resource 類中完全用于該目的(在您的示例中)。CountryBelongsToCountryPricetitleCountry
您可以使用:
/**
* The single value that should be used to represent the resource when being displayed.
*
* @var string
*/
public static $title = 'name';
或者,如果您需要從其他特性/轉(zhuǎn)換中計(jì)算標(biāo)題屬性:
/**
* Get the value that should be displayed to represent the resource.
*
* @return string
*/
public function title()
{
// You can make advanced transformations/processing of any value here
// $this will refer to the current resource instance.
return $this->name;
}
這也適用于全球檢索。
- 1 回答
- 0 關(guān)注
- 84 瀏覽
添加回答
舉報(bào)