仅从连接表中获取指定的列
Posted
技术标签:
【中文标题】仅从连接表中获取指定的列【英文标题】:get only specified columns from the join table 【发布时间】:2016-02-25 02:08:26 【问题描述】:首先我有这个“用户”模型
<?php namespace App;
use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
class User extends Model implements AuthenticatableContract, CanResetPasswordContract
use Authenticatable, CanResetPassword;
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'users';
protected $primaryKey = 'user_id';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['username', 'email', 'password'];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = ['password', 'remember_token'];
public function user_details()
return $this->hasOne('App\users_details');
还有这个“users_details”模型
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class users_details extends Model
protected $table = "user_details";
public function ud()
return $this->belongsTo('App\User');
我试图仅从“user_details”模型中获取特定列(“user_details [foreign key = user_id]”模型与“User [primary key/reference key = user_id]”模型有关)
$users = User::with('user_details')->get(array('users.user_id', 'users_details.phone'));
dd(var_dump($users->toArray()));
但不幸的是,无法正常工作,我收到此错误(请参阅下文)
Connection.php 第 624 行中的 QueryException:SQLSTATE[42S22]:列不存在 发现:1054 未知列“字段列表”中的“users_details.phone”(SQL: 从
users
中选择users
.user_id
、users_details
.phone
)
有什么想法、帮助、线索、建议、推荐吗?
【问题讨论】:
请解释您的意思是它不起作用,并可能添加您遇到的错误 试试$users = User::with('user_details')->select('users.user_id', 'users_details.phone')->get();
@Alexandros: 尝试过但我仍然得到同样的错误“'字段列表'中的未知列'users_details.phone' (SQL: 选择users
.user_id
, users_details
.phone
来自users
)"。有什么想法吗?
【参考方案1】:
试试这个,
User::with(array('user_details'=>function($query)
$query->select('user_id','phone');
))->get();
希望它有效。
【讨论】:
我只是通过 var_dump 注意到 users_details 为空,它应该不为空,因为每个用户记录都有一个 users_details 记录,有什么想法吗? query->select () 第一个参数应该是该表的主键。是 id 还是 user_id ?在这里查看***.com/questions/19852927/…以上是关于仅从连接表中获取指定的列的主要内容,如果未能解决你的问题,请参考以下文章