【问题标题】:Join two tables by not unique attribute in laravel通过 laravel 中的非唯一属性连接两个表
【发布时间】:2018-01-13 17:28:11
【问题描述】:

我是 laravel 和 php 的新手,我想检索值取决于三个表,我使用此代码从第一个表中检索

 $jobid=$request->input('jobID');
    $coursenum=$request->input('referenceNumber');
    $semester=$request->input('semester');
    $checklogin=DB::table('members')->select('externalPersonKey')->where(['jobID'=>$jobid])->first();                        
 $extrnal1=$checklogin->externalPersonKey;

现在我将使用第一个表中的信息检查 members_courses_assign 表中是否存在该值,然后将其与 course 表连接。

注意: (referenceNumber) 不是唯一的,所以我必须在条件中使用 (termkey) 编写它

    $referenceNumber1=DB::table('members_courses_assign')->select('referenceNumber','termkey')->join('courses','members_courses_assign.referenceNumber','=','courses.referenceNumber')->where(['externalPersonKey'=>$extrnal1,'termkey'=>$semester,'referenceNumber'=>$coursenum])->get();

我有这个错误:

QueryException SQLSTATE[23000]:违反完整性约束:1052 字段列表中的“referenceNumber”列不明确

我尝试另一种方式:

$referenceNumber1=DB::table('members_courses_assign')->select('referenceNumber','termkey')->where(['externalPersonKey'=>$extrnal1,'termkey'=>$semester,'referenceNumber'=>$coursenum])->first();
    $refrence1= $referenceNumber1->referenceNumber;
    $termkey3=$referenceNumber1->termkey;
    $infocourse=DB::table('courses')->select('enname','class')->where(['referenceNumber'=>$refrence1,'termkey'=>$termkey3])->first();

并出现此错误:

ErrorException 类 stdClass 的对象无法转换为 字符串

【问题讨论】:

  • select("referenceNumber"... 应该是select("tablename.referenceNumber"...

标签: php sql laravel


【解决方案1】:

尝试使用唯一的列名,即tablename.referencenumber,而不仅仅是referencenumber等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 2016-10-15
    • 2020-02-13
    • 2021-11-17
    相关资源
    最近更新 更多