Search code examples
mysqllaravelfluent

Laravel Fluent queries - How do I perform a 'SELECT AS' using Fluent?


I have a query to select all the rows from the hire table and display them in a random order.

DB::table('hire_bikes')->order_by(\DB::raw('RAND()'))->get();

I now want to be able to put

concat(SUBSTRING_INDEX(description, " ",25), "...") AS description

into the SELECT part of the query, so that I can select * from the table and a shortened description.

I know this is possible by running a raw query, but I was hoping to be able to do this using Fluent or at least partial Fluent (like above).

How can I do it?


Solution

  • You can do this by adding a DB::raw() to a select an array in your fluent query. I tested this locally and it works fine.

    DB::table('hire_bikes')
      ->select(
          array(
            'title',
            'url',
            'image',
            DB::raw('concat(SUBSTRING_INDEX(description, " ",25),"...") AS description'),
            'category'
          )
        )
      ->order_by(\DB::raw('RAND()'))
      ->get();