Tuesday, September 30, 2014

Laravel: Debug by Printing Eloquent Query

Use ->toSql() method like shown below to get the SQL

<?php
use Log;

$name = "hawk";

$userResults = DB::table('users')
       ->leftJoin('planets', function($join) {
         $join->on('users.planet_id', '=' , 'planets.id');
        })
       ->where('users.lname' , 'like', '%'.$name.'%');

//You can print the SQL in your log file
Log::info('My search sql: '.($userResults->toSql()));

// OR you can save into a string variable
$mySQL = $userResults->toSql();

//Then use your get function
$userResults = $userResults->get(array('users.fname', 'planets.name'));
?>

The above code will print the following into your /storage/logs/laravel.log file

[2014-09-30 17:58:07] production.INFO: My search sql: SELECT * FROM  users LEFT JOIN planets ON (users.planet_id = planets.id) WHERE users.lname LIKE '%hawk%' 

Thursday, September 11, 2014

Laravel 4: Easy Installation of PHP mcrypt extension for OS X 10.8/10.9

An automated PHP mcrypt extension installer for OS X 10.8/10.9 - Mountain lion and Mavericks.

Download here: http://topicdesk.com/downloads/mcrypt/mcrypt-download

Thursday, September 4, 2014

Laravel, Eloquent: SQL query with left join

If the query needs parentheses/brackets for a where condition like below Normal SQL:

SELECT users.fname, planets.name 
FROM  users
LEFT JOIN  planets ON (users.planet_id = planets.id)
WHERE users.lname LIKE '%hawk%' 

ELOQUENT SQL:

$name = "hawk";

$userResults = DB::table('users')
       ->leftJoin('planets', function($join) {
         $join->on('users.planet_id', '=' , 'planets.id');
        })
       ->where('users.lname' , 'like', '%'.$name.'%')
       ->get(array('users.fname', 'planets.name'));