我是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