2015-10-05 48 views
1

我正在连接两个表,然后找到指定的记录,但不幸的是它不起作用。查询生成器加入并获取指定的记录laravel

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

任何想法都有帮助吗?

+0

你有没有理由不使用雄辩? – Tim

+0

即时通讯还不擅长。即时通讯同时使用eloqouent和查询生成器,但到目前为止,即时通讯使用查询生成器来解决这个问题。如果你可以建议使用eloqouent来实现它,那么就会爱上你的。 –

+0

你是什么意思具体记录? – aldrin27

回答

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(); 
+0

不幸的是,我得到这个错误“调用未定义的方法stdClass :: join()”的任何想法?即时通讯使用您的答案中的第一个代码。 –

+0

,我得到了这个错误“SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'user.id'(SQL:select * from用户'内部连接'user_details'在'用户'上.'id '='user_details'.'id' where'user'.'id' = 1)“在我尝试第二个之后,有什么想法? –

+0

@CodeDemon在您的问题中发布您的表格架构 –

1

要使用口才实现这一点,请执行下列操作:

我假设你正在使用最新版本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.查询的关系:

例如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'); 

    } 
} 
+0

那么我该如何去查询它然后我做了那里关系的设置? –

+0

对不起,我在第一个答案中忘了它。请看我编辑的一个。 – Tim

+0

不错。我的用户表有ID不是user_id,也是相同的uses_detals主键列有一个名为“ID”是好吗?如何使用它,就像你说的它必须有“user_id” –