我需要根据父母的约束来获取一行的 ID。我想使用 eloquent 来做到这一点并保持优雅。此过程开始时需要注意的一些事项:我有 - country_code(2 位 iso)、lang_code(2 位语言缩写)我需要 - country_id、lang_id(主键)所以我可以得到 - market_id(最后一次查询需要)
我可以使用以下内容检索我需要的数据,对于变量的命名感到抱歉(客户端有奇怪的名称):
// Only receive desired inputs
$input_get = Input::only('marketCode','langCode');
// Need the country based on the "marketCode"
$countryId = Country::where('code',$input_get['marketCode'])->pluck('id');
// Get the lang_id from "langCode"
$languageId = Language::where('lang_abbr',$input_get['langCode'])->pluck('lang_id');
// Get the market_id from country_id and lang_id
$marketId = Market::where('country_id', $countryId)
->where('lang_id',$languageId)->pluck('market_id');
// Get All Market Translations for this market
$marketTranslation = MarketTranslation::where('market_id',$marketId)->lists('ml_val','ml_key');
我已经尝试了以下方法,但这只是根据约束急切地加载国家和语言。仅当 market_id 已知时,急切加载似乎才有帮助。
class Market extends Eloquent {
protected $primaryKey = 'market_id';
public function country() {
return $this->belongsTo('Country');
}
public function language(){
return $this->belongsTo('Language','lang_id');
}
}
$markets = Market::with(array(
'country' => function($query){
$query->where('code','EE');
},
'language'=> function($query){
$query->where('lang_abbr','et');
}
))->get();