Laravelにおけるormの条件フィルタリングとソート

1275 ワード

  • 通常の動作は、aフィールドが10より大きく、bフィールドが10に等しいレコードをフィルタし、a降順に従って、コードは以下の通りである:
  • 	$query->where('a','>',10)->where('b','=','10')->orderBy('a','desc')->get();
    
    	            
    
  • 非常规操作スクリーニングaフィールドがbフィールドより小さいすべてのレコードをスクリーニングし、a降順に従って分析する:ソート通常操作は何も言うことはありません.主にスクリーニングです.sqlを直接書くとormを利用できません.これは私が望んでいるものではありません.直接通常操作コードでエラーを報告します.この时、whereRaw()という方法を使う必要があります.具体的には、ドキュメントを自分で参照してください.使用後、ormにsql文を埋め込んで、この問題を完璧に解決します.コードは以下の通りです.
  • 	$query->whereRaw('a < b')->orderBy('a','desc')->get();
    
  • 非常規操作ソートフィルタaフィールドがbフィールドより小さいすべての記録をフィルタリングし、(a/b)昇順に分析する:このフィルタリングは上のように、ソートが重要で、orderBy('a')->orderBy('b')を直接使用して、結果は需要に合わず、orderBy('a/b')コードを使用してエラーを報告します.どうすればいいですか.2の処理と同様に、order by句の値として原生文字列を設定するためにorderByRaw()を用いることができ、コードは以下の通りである:
  • .
    	$query->whereRaw('a < b')->orderByRaw('a/b ASC')->get();
    

    まとめ:見たことのない問題に遭遇したら、自分で先に処理してみると、自然に解決できるのが一番で、解決できないのはドキュメントを見たり、助けを求めたりするしかありません.