【问题标题】:how to get data for two tables in laravel 5.2如何在 laravel 5.2 中获取两个表的数据
【发布时间】:2017-02-12 16:29:55
【问题描述】:

我正在使用 Laravel 并陷入困境。我有以下表格: 学生表和关系表 学生表具有以下列 id,name,sex,age,and class

关系表具有以下列 id,id_student_girl,id_student_boy 和地位

我需要显示如下所示的输出: name_student_girl、name_student_boy 和地位

我试过的代码:

$query =DB::table('student')
            ->join('relation','relation.id_student_girl', '=', 'student.id')
            ->join('relation','relation .id_student_boy ', '=', 'student.id')
            ->select('student.*','relation.*')
            ->get();

我在这个查询中遇到错误任何想法,如何实现这一点。我希望我能够清除我的情况。谢谢

【问题讨论】:

  • 请发布您的错误
  • SQLSTATE[42000]:语法错误或访问冲突:1066 不是唯一的表/别名
  • 使用唯一的表别名join('relation as r1', 'r1.id_student_girl' ... )。但这不会是该查询的最后一个问题。
  • 它给出空输出
  • 那是因为一个学生不可能同时是一个女孩和一个男孩 ;-)

标签: php mysql laravel eloquent


【解决方案1】:

试试这个:

$query =DB::table('student')
->join('relation', function($join)
{
    $join->on('relation.id_student_girl', '=', 'student.id')
       ->orOn('relation.id_student_boy ', '=', 'student.id');
})->select('student.*','relation.*')->get();

即使这确实有效,我认为这是一个非常糟糕的数据库结构。为什么您的关系表有 id_student_boy 和 id_student_girl 列? 2列之间有关系吗?

【讨论】:

  • 是的,我认为最好的建议是,制作两张桌子,一张给女孩,一张给男孩
  • 我认为你最好提出一个更好的数据库设计。
【解决方案2】:

您可以使用此代码轻松获取所有关系数据..

App\Student::with('relation')->get();

但要运行此代码,您需要在模型中描述您的表关系。 检查这个

$books = App\Book::with('author')->get(); 

【讨论】:

  • Builder.php 第 2405 行中的 BadMethodCallException:调用未定义的方法 Illuminate\Database\Query\Builder::all()
  • 学生::with('relation')->get();
猜你喜欢
  • 2016-05-29
  • 2021-01-19
  • 2016-11-16
  • 2017-03-27
  • 2016-06-04
  • 2017-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多