Php 查询生成器联接并获取指定的记录laravel
我正在连接两个表,然后找到指定的记录,但不幸的是它不起作用Php 查询生成器联接并获取指定的记录laravel,php,laravel,laravel-5,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); 有什么想法有用吗?我想,正确的查询如下: $
$users = DB::table('users')
->join('user_details', 'users.id', '=', 'user_details.id')
//->select('users.*', 'contacts.phone', 'orders.price')
->get()->find(1);
有什么想法有用吗?我想,正确的查询如下:
$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();
要使用雄辩来实现这一点,请执行以下操作: 我假设您使用的是最新的Laravel版本(5.1) 1。您需要一个用户模型和用户详细信息:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model {}
UserDetail.php
3。查询关系:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model {}
e、 g.UserController.php
你不使用雄辩有什么原因吗?我还不擅长。我同时使用eLoqount和query builder,但到目前为止,我使用query builder解决这个问题。如果你能建议使用EloQoont获得它,那么你会喜欢你的。你说的特定记录是什么意思?就像我想获取与给定id匹配的记录。你传递的是什么参数?用户的id?不幸的是,我得到了这个错误“调用未定义的方法stdClass::join()”有什么想法吗?我使用了你答案中的第一个代码。我得到了这个错误“SQLSTATE[42S22]:未找到列:在where子句中1054未知列“user.id”(SQL:select*fromusers
internal joinuser\u details
id
user\u detailsid
whereuser
id
=1)在我尝试了第二个之后,有什么想法吗?@CodeDemon在你的问题中也发布了你的表模式,我只添加了一个示例。您需要为查询生成器指定字段。这是最简单的方法。但更好的解决方案是使用laravel关系。那么,在我完成了关系设置之后,我将如何查询它呢?对不起,我在第一个答案中忘记了它。请看我编辑的。很好。我的用户表的id不是user\u id,与uses\u detals相同,主键列的名称为“id”,可以吗?我将如何使用它正如您所说,它必须具有“用户id”。您可以在定义这样的关系时指定外键:$this->hasMany('App\UserDetail
,'foreign\u key');`只需将外键
替换为id
即可。
function user()
{
return $this->belongsTo('App\User');
}
<?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');
}
}