0

有没有办法使用访问器来更改 Laravel 4 中某个查询的字段?所以,我有一个模型,“Fanartist.php”。在另一个表“艺术家”中,我有“描述”字段。我通过查询函数中的连接来调用它。这是功能:

public static function fan_likes_json() {
        $fan_likes = DB::table('fanartists')
                    ->join('artists', 'fanartists.artist_id', '=', 'artists.id')
                    ->where('fanartists.fan_id', '=', Auth::user()->id)
                    ->select('artists.id', 'artists.stage_name', 'artists.city', 'artists.state', 'artists.image_path', 'artists.description')
                    ->get();  

}

我正在尝试使用以下内容更改此特定查询函数的“描述”字符串:

public function getDescriptionAttribute($value) {

        return substr($value, 0, 90);

    }

我应该将此添加到 Fanartist 模型还是 Artist 模型?而且,我如何让这个访问器只影响这个特定查询功能的描述字段?我希望描述保持不变以用于其他目的和查询。感谢您的帮助。

4

1 回答 1

0

我认为 Eloquent 的访问器/修改器不会帮助您进行自定义查询,例如您指定的查询。作为替代方案,您可以尝试这样的事情:

$fan_likes = DB::table('fanartists')
    ->join('artists', 'fanartists.artist_id', '=', 'artists.id')
    ->where('fanartists.fan_id', '=', Auth::user()->id)
    ->select(DB::raw('substring(artists.description, 1, 90) as description, artists.id, artists.stage_name, artists.city, artists.state, artists.image_path'))
    ->get();

然后,出于此查询的目的,艺术家描述将是缩短的版本。

请参阅:Laravel 4 中的MySQL SUBSTRING和Raw 表达式

于 2013-08-13T21:55:59.483 回答