Laravel 4 如何在laravel 4中同时使用渴望加载和加入雄辩
型号Laravel 4 如何在laravel 4中同时使用渴望加载和加入雄辩,laravel-4,inner-join,eloquent,eager-loading,Laravel 4,Inner Join,Eloquent,Eager Loading,型号 class WPModel extends Eloquent { protected $table = 'work_processes'; protected $guarded = array('id'); protected $softDelete = true; // declaring one-to-many relationship public function relatedWPAQs() { return $
class WPModel extends Eloquent
{
protected $table = 'work_processes';
protected $guarded = array('id');
protected $softDelete = true;
// declaring one-to-many relationship
public function relatedWPAQs()
{
return $this->hasMany('WPAQModel', 'wp_id');
}
public function relatedUsers()
{
return $this->belongsTo('UserModel', 'wp_owner_id');
}
}
class UserModel extends Eloquent
{
protected $table = 'users';
protected $softDelete = true;
public function relatedWPs()
{
return $this->hasMany('WPModel', 'wp_owner_id');
}
}
class WPAQModel extends Eloquent
{
protected $table = 'wp_audit_questions';
protected $fillable = array('wp_id', 'wp_audit_question');
// declaring one-to-many relationship - the inverse way
public function relatedWP()
{
return $this->belongsTo('WPModel', 'wp_id');
}
public function scopeWpParent($query, $id)
{
return $query->where('wp_id', '=' ,$id);
}
}
控制器
class WPAQController extends BaseController
{
public function showWPAQ($wpid)
{
$workprocess = WPModel::where('id', $wpid)
->join('users', 'users.id', '=', 'work_processes.wp_owner_id')
->select('users.user_name', 'work_processes.*')
->with(array(
'relatedWPAQs' => function($query) use ($wpid)
{
$query->where('wp_id', '=',$wpid);
}
))
->get();
return View::make('wpaqshow')->with(compact('workprocess'));
}
}
当我运行这段代码时,我得到以下错误
SQLSTATE[23000]:完整性约束冲突:中的1052列“id”
where子句不明确(SQL:selectusers
user\u name
,
work\u流程
*来自work\u流程
内部连接用户
打开
用户
id
=工作流程
wp\u所有者id
其中
work\u进程
deleted\u在
处为空且id
=?)(绑定:数组(
0=>'1',))
请尝试以下操作:
$workprocess = WPModel::where('work_processes.id', $wpid)
->join('users', 'users.id', '=', 'work_processes.wp_owner_id')
->select('users.user_name', 'work_processes.*')
->with(array(
'relatedWPAQs' => function($query) use ($wpid)
{
$query->where('wp_id', '=',$wpid);
}
))
->get();
您加入了几个表。现在,laravel有许多ID
。您必须告诉Laravel在where子句中应该使用哪个id
WPModel::where('id', $wpid)