【问题标题】:Laravel Join multiple table not workingLaravel加入多个表不起作用
【发布时间】:2017-05-24 03:06:47
【问题描述】:

我在 Laravel 5.4 上遇到问题,当我尝试仅使用一个连接时它可以正常工作并返回正确的数据,但他们添加另一个连接它不起作用。

$data = Player::select(DB::raw('CONCAT(familyName,", ",firstName) AS fullName'))
    ->where('firstname', 'like', '%'.$search.'%')
    ->orWhere('familyName', 'like', '%'.$search.'%')
    ->orderBy('familyName', 'asc')
    ->join('teams', 'players.primaryClubId', '=', 'teams.clubId')
    ->join('person_competition_statistics', 'players.personId', '=', 'person_competition_statistics.personId')
    ->addSelect(['players.*', 'teams.teamName', 'teams.teamNickname', 'teams.teamCode'])
    ->get()
    ->unique() //remove duplicates
    ->groupBy(function($item, $key) { //group familyName that starts in same letter
        return substr($item['familyName'], 0, 1);
    })
    ->map(function ($subCollection) {
        return $subCollection->chunk(4); // put your group size
    });

return $data;

返回错误:

QueryException in Connection.php line 647:
SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'familyName' in field list is ambiguous (SQL: select CONCAT(familyName,", ",firstName) AS fullName, `players`.*, `teams`.`teamName`, `teams`.`teamNickname`, `teams`.`teamCode` from `players` inner join `teams` on `players`.`primaryClubId` = `teams`.`clubId` inner join `person_competition_statistics` on `players`.`personId` = `person_competition_statistics`.`personId` where `firstname` like %% or `familyName` like %% order by `familyName` asc)

【问题讨论】:

  • 在您加入的所有 3 个表格中,您是否在多个表格中拥有 familyName 列?如果是这样,您需要在查询中使用它的任何地方为其添加表名前缀。喜欢DB::raw('CONCAT(players.familyName,", ",firstName) AS fullName')
  • 感谢@ayip 的帮助,它现在可以工作了
  • @PenAndPapers 如果你要加入表格,那么你应该给表格别名。像 team as t , player as p ,然后列名像 p.playername
  • 感谢@NikhilRadadiya
  • @PenAndPapers 工作了吗?

标签: php laravel laravel-5 orm laravel-eloquent


【解决方案1】:

如果您要加入表格,那么您应该提供表格别名。比如 team as t , player as p ,列名比如 p.playername

【讨论】:

    猜你喜欢
    • 2020-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    相关资源
    最近更新 更多