代码之家  ›  专栏  ›  技术社区  ›  SaidbakR

Laravel eloquent,其中pivot null或小于

  •  1
  • SaidbakR  · 技术社区  · 9 年前

    命名已关闭 ,在多对多关系的透视表中。我想从哪里得到物品 关闭 我尝试了以下方法:

    // In model
    public function jobEquipments($job, $one = false)
        {
            $nowDt = Carbon::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s'));
            if (!$one){
            return $this->belongsToMany(Equipment::class, 'cavity_actions', 'cavity_id', 'equipment_id')
                    ->wherePivot('job_id', $job)
                    ->withPivot('created_at','aid')
                    ->wherePivot('closed',null)
                    ->orWherePivot('closed','<',date('Y-m-d H:i:s'))
                    ->orderBy('pivot_created_at', 'desc');
                }
    .... 
    

    $nowDt 而不是 date('Y-m-d H:i:s') 在里面 orWherePivot ->orWherePivot('closed','<',date('Y-m-d H:i:s')) 条款在我的数据库中,我很确定有足够的closed datetime值小于的记录 Now .

    2 回复  |  直到 9 年前
        1
  •  3
  •   Laerte    9 年前

    尝试隔离 or 声明。试试这个:

    $this->belongsToMany(Equipment::class, 'cavity_actions', 'cavity_id', 'equipment_id')
                    ->wherePivot('job_id', $job)
                    ->withPivot('created_at','aid')
                    ->where(function ($q) {
                        $q->where('cavity_actions.closed',null)
                          ->orWhere('cavity_actions.closed','<',date('Y-m-d H:i:s'));
                    })
                    ->orderBy('pivot_created_at', 'desc');
    
        2
  •  0
  •   MingalevME    7 年前

    PostgreSQL ( 照明\数据库\查询\语法\ PostgresGrammar ):

    # wherePivotIsNull
    ->wherePivot(SomeModelName::DELETED_AT, 'is not distinct from', DB::raw('null')
    
    # wherePivotIsNotNull
    ->wherePivot(SomeModelName::DELETED_AT, 'is distinct from', DB::raw('null')
    
    推荐文章