【问题标题】:Mysql query to get all columns and its sub contents from other table by its idMysql查询通过其id从其他表中获取所有列及其子内容
【发布时间】:2019-04-20 16:22:44
【问题描述】:

我有两个名为“tasks”和“cmets”的表。

我想从“任务”表中获取所有任务。

“cmets”表有 2 列:description 和 task_id。

task_id 是任务表的外键。

$tasks = DB::table('tasks')
       ->join('comments','tasks.id', '=','comments.task_id')
       ->select('tasks.*','comments.*')
       ->get();

此代码返回错误。

我该怎么做?

【问题讨论】:

  • 返回什么错误?
  • 您的 SQL 语法有误;检查与您的 MariaDB 服务器版本相对应的手册,以了解在 '* on comments.* = ' at line 1 (SQL: select * from `tasks` inner join `comments` on `tasks`.`id` = `comments`.`task_id` inner join `tasks`.* on `comments`.* = ) 附近使用的正确语法
  • 这不会返回所有没有 cmets 的任务。
  • 你能再分享一次错误信息吗?它很难理解,所以粘贴它并分享网址paste.laravel.io

标签: php mysql laravel


【解决方案1】:

我已经尝试过它可以完美运行。也许缺少导入您的数据库外观?或者你可以“\”添加数据库

$members = \DB::table('members')
        ->join('member_daily_bonuses','members.id', '=','member_daily_bonuses.member_id')
        ->select('members.*','member_daily_bonuses.*')
        ->get();

    dd($members);

编辑

但如果它们有相同的列,则必须使用members.id as memberId 等。否则,只有表中的记录才会出现。


【讨论】:

  • 我可以看到它有效,但它不会返回没有每日奖金的所有成员。
  • 您必须为相同的字段设置别名。
  • 别名?你什么意思
  • 不返回所有没有每日奖金的会员。
  • 那我们就可以用leftJoin代替join了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多