如何在laravel 4中同时使用Eager的Eager Load和Join

Goharsahi

楷模

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 where子句中的列“ id”不明确(SQL:= 上的内部联接中选择usersuser_namework_processes。*,其中为null和=?)(绑定:array(0 => '1',))work_processesusersusersidwork_processeswp_owner_idwork_processesdeleted_atid

我的母亲

请尝试以下方法:

$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有很多Ids您必须告诉Laravel Laravelid在哪一个子句中使用。

WPModel::where('id', $wpid)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Laravel Eloquent Eager Load函数中使用参数?

如何使用preload,include或eager_load在Ruby中优化此方法?

如何在Laravel 5中同时使用orderBy和Paginate

如何在Laravel中同时使用Web和API防护?

如何在Laravel中同时使用get和分页

如何在 Laravel 中同时使用“分页()”和清单?

如何在Laravel 4路由URL中同时使用ID和Slug?(资源/ ID /子弹)

如何在 Laravel 6 中连接和使用 bootstrap 4?

如何在Laravel Eloquent中使用join?

如何在Laravel中同时启用API和Web Guard

在 Laravel 中同时使用 join 和 pagination 时出现的问题

如何在Laravel中同时在DB :: raw中使用CONCAT和IFNULL?

如何在 Laravel 中使用 WhereNotIn 和 with?

如何使用FetchType.EAGER

如何在 Laravel 中通过 Left Join、count 和 group by 编写这个 SQL 查询?

如何在Laravel中使用join和groupby并进行迭代?

如何在 Laravel 5.7 和 Laravel Collective 中使用 action

如何使用在SQLAlchemy和contains_eager的关系上定义的order_by?

如何在Laravel中的get()之后使用限制和偏移

如何在Laravel中安装和使用browserify?

如何在jQuery中对laravel和ajax分别使用

如何在Laravel中执行此JOIN查询?

如何在Laravel Controller中创建SQL Join语句

如何在laravel中通过join查询来查看路由

如何从嵌套的 Eager Loading Laravel 中获取对象?

如何在TensorFlow 2 Eager中获得learning_phase?

如何在TF 2.2 Eager中获得渐变?

如何在Laravel和Eager负载关系中将多个个体有说服力的模型合为一体

如何在Laravel中同时具有集群和非集群Redis连接