2014-04-04 92 views
0

我是Laravel的新手。任何人都可以告訴我如何在laravel查詢生成器中編寫此查詢?Laravel查詢構建器

SELECT users.id, customers.zip 
FROM users, customers 
WHERE users.id =26 
AND customers.customer_id = users.user_name 
+1

請參閱文檔? – itachi

+0

我閱讀他們的手冊,但我無法弄清楚。 :( – ehp

回答

1

簡單的方法是用查詢生成器 - here's a link to a join example

當你開發Laravel的知識,你可能會開始使用Laravel雄辯的ORM,在這種情況下,你會想read this section of the docs學習如何定義表格之間的關係。

更新:

我已經看到上面你上面的評論,有關無法理解的文檔。這是令人驚訝的,因爲他們在這方面的充分測試,並明確,但這裏的答案,我認爲你正在尋找:

DB::table('users') 
    ->where('users.id', '=', 26) 
    ->join('customers', 'customers.customer_id', '=', 'users.user_name') 
    ->select('users.id', 'customers.zip'); 
0

那麼你的情況最好使用HasOne關係http://laravel.com/docs/eloquent#relationships 您需要創建客戶類

class Customer extends Eloquent { 

    //if you table is not called customers you need to add 
    protected $table = 'table_name'; 

    } 

比用戶控制器

class User extends Eloquent { 

     public function customers() 
     { 
      return $this->hasOne('Customer', 'customer_id'); 
     } 

    } 

簡而言之laravel會發現users.id(26),並與custome加入他們的行列r_id(26),控制器中的代碼更簡單,更簡單。

$user_id = 26; 
$user = User::find($user_id); 

echo "username:".$user->user_name."user/customer zip code: ".$user->customers->zip; 

這種關係只有當每個用戶都有一個記錄在客戶表(所以如果會有twoo user_id說明26將只得到第一個),如果你想擁有它們爲每個用戶更多然後一個記錄你需要用hasMany