Php Laravel 5.2查询1个表中的邮政编码,然后获取ID并查询另一个表
我正在努力学习如何进行查询。搜索字段用于存储在用户配置文件中的邮政编码(并且用户配置文件与用户有关系) 所以我有一些东西返回一个结果(但是不止一个),但我听说为一个做两个查询是不好的Php Laravel 5.2查询1个表中的邮政编码,然后获取ID并查询另一个表,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,我正在努力学习如何进行查询。搜索字段用于存储在用户配置文件中的邮政编码(并且用户配置文件与用户有关系) 所以我有一些东西返回一个结果(但是不止一个),但我听说为一个做两个查询是不好的 public function index() { $queryUsername = Request::get('username'); $queryPostcode = Request::get('postcode'); if ($queryUsername) { $use
public function index()
{
$queryUsername = Request::get('username');
$queryPostcode = Request::get('postcode');
if ($queryUsername) {
$users = User::where('username', 'LIKE', "%$queryUsername%")->get();
}
if ($queryPostcode) {
$usersInfo = UserProfile::where('postcode', '=', "$queryPostcode")->value('user_id');
$users = User::where('id', '=', "$usersInfo")->get();
}
return view('view', compact('users'));
}
试试这个:
public function index(){
$queryUsername = Request::get('username');
$queryPostcode = Request::get('postcode');
if ($queryUsername):
$users = User::where('username', 'LIKE', "%".$queryUsername."%")->get();
elseif ($queryPostcode):
$usersInfo = UserProfile::where('postcode', '=', $queryPostcode)->value('user_id');
$users = User::where('id', '=', "$usersInfo")->get();
endif;
return view('view', compact('users'));
}
对于引用的问题,更好的方法是使用join,而不是两个不同的查询
public function index()
{
$queryUsername = Request::get('username');
$queryPostcode = Request::get('postcode');
if ($queryUsername) {
$users = User::where('username', 'LIKE', "%$queryUsername%")->get();
}
if ($queryPostcode) {
$users = Users::rightJoin('user_profiles','users.id', '=', 'user_profiles.user_id')
->where('user_profiles.postcode', '=', "$queryPostcode")
->select(\DB::raw('users.*'))
->get();
}
return view('view', compact('users'));
}
如果您正在查找与用户名完全匹配的
使用LIKE进行用户名匹配并不好
$users=User::where('username','LIKE',“%$queryUsername%”)->get();
因为对于用户名chris和chrisgeorge和chrisy,查询%chris%将起作用,并且您不会得到精确的匹配,因此建议使用“=”而不是like出于某种原因,这也只返回一个结果,>\u我认为这是因为您按用户id进行的查询应该只有一个。天哪,您真是天赐之物!非常感谢!!我在做左连接和尝试连接,但不知道如何解决它!虽然不需要->选择(\DB::raw('users.*'))