我正在加入两个表然后找到指定的记录,但遗憾的是它无法正常工作。
$users = DB::table('users')
->join('user_details', 'users.id', '=', 'user_details.id')
//->select('users.*', 'contacts.phone', 'orders.price')
->get()->find(1);
任何想法都有帮助吗?
答案 0 :(得分:1)
要使用Eloquent实现此目的,请执行以下操作:
我假设您正在使用最新的Laravel版本(5.1)
<强> 1。您需要一个用户模型和UserDetails:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model {}
<强> 2。建立他们之间的关系
user.php的
function details()
{
// for this to work, the user_details table needs a column user_id
return $this->hasMany('App\UserDetail');
}
UserDetail.php
function user()
{
return $this->belongsTo('App\User');
}
第3。查询关系:
e.g。 UserController.php
<?php
namespace App\Http\Controllers;
use App\User;
class UserController {
public function index()
{
$user = User::find(1);
$user_details = $user->details;
// or
$user = User::find(1)->with('details');
}
}
答案 1 :(得分:0)
我认为,正确的查询将如下所示:
$users = DB::table('users')
->find(1)
->join('user_details', 'users.id', '=', 'user_details.id')
->get();
或者您可以使用where
指定where子句。
$users = DB::table('users')
->where('user.gender', '=', 1) // Example.
->join('user_details', 'users.id', '=', 'user_details.id')
->get();