我是laravel的新手,我想知道如何通过当前的lang_code(语言表的一列)获取language_id(数据库中的主键“id”)。
在我的语言模型中,我创建了一个这样的函数:
public function getLang($lang_code = null) {
$lang_code = App::getLocale();
return SELF::with($lang_code)->get();
}
在homeController中,我添加了这行代码:
$lang = Language::with('getLang');
echo $lang->id;
错误:
at HandleExceptions->handleError('8', 'Undefined property: Illuminate\Database\Eloquent\Builder::$id', '/home/otherraylinux/public_html/starter/app/Http/Controllers/HomeController.php', '52', array('articles' => object(Collection), 'lang' => object(Builder))) in HomeController.php line 52
修改的 我想要做的实际事情是:
$lang = DB::table('languages')->select('id')->where('lang_code', '=', App::getLocale())->get();
echo $lang[0]->id;
修改的
有什么问题?获得身份证的最佳做法是什么?我知道上面的代码在实践中不应该很好。
答案 0 :(得分:1)
您可以在laravel 5中使用Query范围
<强>模型强>
public function scopeLangCode($query, $lang_code)
{
return $query->where('lang_code', $lang_code);
}
<强>控制器强>
$lang = Language::langCode(App::getLocale())->first();
echo $lang->id;
有关查询范围的更多详细信息:http://laravel.com/docs/5.0/eloquent#query-scopes
这是你在找什么?