Laravel范围内的别名列

时间:2016-04-20 08:16:02

标签: laravel laravel-5 laravel-5.1

这是我的模型范围

public function scopeUser($query, $user_id)
{
    return $query->where('user_id', $user_id)
                ->select(['_id', 'company_name', 'location', 'template_id', 'current_theme_id', 'site_url', 'site_path', 'addons']);
}

我想要的是theme_id作为别名代替current_theme_id

尝试搜索解决方案,但所有主题都基于数据库查询。

由于

4 个答案:

答案 0 :(得分:0)

你可以试试这个:

public function scopeUser($query, $user_id)
{
    return $query->where('user_id', $user_id)
                ->select(['_id', 'company_name', 'location', 'template_id', 'current_theme_id as theme_id', 'site_url', 'site_path', 'addons']);
}

答案 1 :(得分:0)

将“current_theme_id”替换为“current_theme_id as theme_id”,如下所示。

$ vagrant up
There was an error loading a Vagrantfile. The file being loaded
and the error message are shown below. This is usually caused by
a syntax error.

Path: /Users/<username>/<workspace>/<project>/Vagrantfile
Line number: 0
Message: RuntimeError: You need a local.yaml

答案 2 :(得分:0)

在您的模型中,添加:

protected $appends = ['theme_id']

public function getThemeIdAttribute()
{
    return $this->current_theme_id;
}

文档:https://laravel.com/docs/5.1/eloquent-mutators#accessors-and-mutators

答案 3 :(得分:0)

在你的评论中:

  

我没有收到任何错误,但结果中没有current_theme_idtheme_id。记录正在妥善归还

我怀疑列current_theme_id列在您的模型$fillable属性中。如果已经列出,请尝试以下建议。

这可能只是一种解决方法,使用selectRaw方法

public function scopeUser($query, $user_id)
{
    return $query->where('user_id', $user_id)
                 ->selectRaw('*, current_theme_id AS theme_id')
                 ->select([
                     '_id', 'company_name', 'location',
                     'template_id', 'site_url', 'site_path',
                     'addons', 'theme_id'
                 ]);
}

希望这会帮助你。快乐的编码。欢呼声。