laravel 5获取控制器中的当前语言ID

时间:2015-04-05 10:25:47

标签: php laravel

我是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;

修改

有什么问题?获得身份证的最佳做法是什么?我知道上面的代码在实践中不应该很好。

1 个答案:

答案 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

这是你在找什么?