Laravel Eloquent Select CASE?

前端 未结 2 2029
太阳男子
太阳男子 2020-12-08 19:23

Is there anyone with experience in PHP & Laravel Eloquent who can help me resolve this statement? I\'m trying to inject a CASE... WHEN.. END... inside a raw() method. It

相关标签:
2条回答
  • 2020-12-08 19:47

    Move your raw() call inside the SELECT statement:

    ->select('shares.id AS share_id', 'users.id AS user_id', 'shares.connected_user_id',    
      'shares.original_language_id', 'shares.image',
      'users.first_name', 'users.last_name', 'users.email',
      'locations.city', 'provinces.name', 'countries.code',
      'locations.lat', 'locations.lng',
      'shares.created_at',
      DB::raw('(CASE WHEN users.id = ' . $user . ' THEN 1 ELSE 0 END) AS is_user')
      )
    ->orderBy('shares.created_at', 'desc')
    

    From: https://laravel.com/docs/5.4/queries#raw-expressions

    0 讨论(0)
  • 2020-12-08 19:51

    Alternatively you can use selectRaw instead.

    ->selectRaw("shares.id AS share_id, users.id AS user_id , 
        shares.connected_user_id ,    
          shares.original_language_id, shares.image,
          users.first_name, users.last_name, users.email,
          locations.city, provinces.name, countries.code,
          locations.lat, locations.lng,
          shares.created_at,
          (CASE WHEN users.id = {$user} THEN 1 ELSE 0 END) AS is_user)")
        ->orderBy('shares.created_at', 'desc')
    
    0 讨论(0)
提交回复
热议问题