查询构建器连接并获取指定的记录laravel

时间:2015-10-05 07:08:06

标签: php laravel laravel-5

我正在加入两个表然后找到指定的记录,但遗憾的是它无法正常工作。

$users = DB::table('users')
        ->join('user_details', 'users.id', '=', 'user_details.id')
        //->select('users.*', 'contacts.phone', 'orders.price')
        ->get()->find(1);

任何想法都有帮助吗?

2 个答案:

答案 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();