2017-06-30 2 views
0

計算列を使用してラーベルモデルを作成したいと思います。私はこれを行う方法を見てきましたが、データがダウンロードされましたが、私がしたいのは高価ですが、SQLの関数としてアクセス可能です。基本的には、クエリビルダーにもう1つの列を追加したいのですが、どうやってそれをどうやって行くのかは分かりません。ラヴェルエキューモントモデルにSQL関数を追加する方法

クエリのようなものである必要があります:

select *, my_function(ID) as my_value from my_table; 

と私はリターン(ない生レコード)にモデルのインスタンスを取得する必要があります。

私はまた、複数のクエリを避けることを望んでいます。

ありがとうございました。

+0

あなたはRedisの中にクエリ結果を格納し、キャッシュされた結果が https://stackoverflow.com/questions/31527161/using-redis-to-cache-sql-result下のリンクをチェックし更新するために、スケジュールされたジョブを定義することができます –

答えて

2

あなたのクエリは、このようなものになることができます。

User::select([ 
    'users.*', 
    \DB::raw('YEAR(created_at) as year') 
])->get() 

あなたが好きな機能をYEAR関数を交換してください。その列にも結果を追加する必要があります。今、私は通常のようなモデルを取得することができます

class User extends Model 
{ 
... 

    public function newQuery() 
    { 
     return parent::newQuery()->select('users.*', \DB::raw('YEAR(created_at) as year')); 
    } 

} 

:musicviciousからの回答に

+0

ありがとうございます。それはまさに私が後にしていることです – FloatingKiwi

0

ビルは私が一緒に行くことになりました。

User::all(); 
関連する問題