【问题标题】:issue in join of laravel in controller在控制器中加入 laravel 的问题
【发布时间】:2020-06-22 08:19:39
【问题描述】:

当我申请加入服务器时显示错误 (2/2) 查询异常 SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以了解正确的语法以使用

我的控制器

$player_bet = DB::table('player_bet')
                ->join('poll', 'player_bet.poll_id = poll.id')
                ->join('poll_type', 'poll_type.id = poll.poll_type_id')
                ->join('tournament_week', 'poll.week_id = tournament_week.id')
                ->join('tournament', 'poll.tournament_id = tournament.id')
                ->join('users', 'player_bet.users_id = users.id')
                ->join('poll_winner', 'poll_winner.poll_id = poll.id AND poll_winner.user_id = users.id', 'left')
                ->where('users.id ='.$user_id)
                ->select('poll_winner.id AS winner_id, poll_winner.winning_amount AS won_amount,, poll_winner.tax_amount AS won_tax_amount, player_bet.id as bet_id, player_bet.create_time,poll.id poll_id,poll.winning_amount,poll.amount poll_amount,poll.week_id week_id,poll.description,poll.description_detail,poll_type.name poll_type,poll_type.id poll_type_id,tournament_week.week_no week_no, poll.is_close is_close, tournament.id tournament_id, tournament.name tournament_name,tournament.start_date,tournament.end_date,tournament.logo, users.username username')
                ->where('users_id',$user_id)
                ->get();

【问题讨论】:

    标签: database laravel join


    【解决方案1】:

    您的连接语法不正确:https://laravel.com/docs/7.x/queries#joins

    【讨论】:

      【解决方案2】:

      还有你的 Where 条件不合适

      【讨论】:

        【解决方案3】:

        问题一:

        更改多重条件join方法

        ->join('poll_winner', 'poll_winner.poll_id = poll.id AND poll_winner.user_id = users.id', 'left')
        

        ->leftjoin('poll_winner', function($join) {
          $join->on('poll_winner.poll_id', '=', 'poll.id')
               ->whereColumn('poll_winner.user_id', 'users.id');
        })
        

        问题2:

        你有两个where 条件,where 需要这样,一个是列,另一个是列的值:

        ->where('users.id', $user_id)
        

        问题3:

        如果你想使用一个字符串作为select方法的参数,你需要使用selecRaw

        ->selectRaw('poll_winner.id AS winner_id, poll_winner.winning_amount AS won_amount,, poll_winner.tax_amount AS won_tax_amount, player_bet.id as bet_id, ...')
        

        或者你需要使用多个字符串作为select方法的参数:

        ->select('poll_winner.id AS winner_id', 'poll_winner.winning_amount AS won_amount', ...)
        

        【讨论】:

          猜你喜欢
          • 2019-06-13
          • 2021-10-24
          • 2013-11-14
          • 1970-01-01
          • 2014-04-26
          • 1970-01-01
          • 2018-09-25
          • 2023-03-22
          • 2017-02-25
          相关资源
          最近更新 更多