• laraval join 的理解


    public function join($table, $one, $operator = null, $two = null, $type = 'inner', $where = false)
    {
    // If the first "column" of the join is really a Closure instance the developer
    // is trying to build a join with a complex "on" clause containing more than
    // one condition, so we'll add the join and call a Closure with the query.
    if ($one instanceof Closure) {
    $join = new JoinClause($type, $table);
    call_user_func($one, $join);
    $this->joins[] = $join;
    $this->addBinding($join->bindings, 'join');
    }
    // If the column is simply a string, we can assume the join simply has a basic
    // "on" clause with a single condition. So we will just build the join with
    // this simple join clauses attached to it. There is not a join callback.
    else {
    $join = new JoinClause($type, $table);
    $this->joins[] = $join->on(
    $one, $operator, $two, 'and', $where
    );
    $this->addBinding($join->bindings, 'join');
    }
    return $this;
    }

    ====DB::table('app_a as a')
    ->join('app_b as b',function($join){
    $join->on('a.id','=','b.goodId')
    ->where('b.status','=','SUCCESS')
    ->where('b.type','=','UNLOCK');
    }, null,null,'left')
    ->where('a.id','>',1)
    ->get();

    //相当于
    SELECT * FROM app_a as a
    LEFT JOIN app_b as b on a.id = b.goodId
    and b.status = 'SUCCESS' and b.type = 'UNLOCK'
    where a.id > 1;


    当join不传left时,默认是inner。

  • 相关阅读:
    Codeforces 977F
    Codeforces 219C
    Codeforces 1132
    Codeforces 660C
    Codeforces 603A
    Codeforces 777C
    Codeforces 677
    JNUOJ 1032
    Codeforces 677D
    Codeforces 835C
  • 原文地址:https://www.cnblogs.com/JdsyJ/p/11357104.html
Copyright © 2020-2023  润新知