2014-04-04 66 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