我是Laravel的新手。任何人都可以告诉我如何在laravel查询生成器中编写此查询?Laravel查询构建器
SELECT users.id, customers.zip
FROM users, customers
WHERE users.id =26
AND customers.customer_id = users.user_name
我是Laravel的新手。任何人都可以告诉我如何在laravel查询生成器中编写此查询?Laravel查询构建器
SELECT users.id, customers.zip
FROM users, customers
WHERE users.id =26
AND customers.customer_id = users.user_name
简单的方法是用查询生成器 - 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');
那么你的情况最好使用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
DB::table('users')
->join('customers','users.username', '=', 'customer.customer_id')
->select('users.id', 'customer.zip')
->where('users.id','=', '26')
->get();
这会给你的。
参照本作更https://laravel.com/docs/5.2/queries如果你想用雄辩的集合
请参阅本 https://laravel.com/docs/5.2/collections#method-filter。
请参阅文档? – itachi
我阅读他们的手册,但我无法弄清楚。 :( – ehp