Laravel Eloquent的内连接错误

时间:2018-04-29 14:44:14

标签: mysql laravel-5

我想获得匹配的数据frpm两个表。 仅在' pn'处匹配相同的colume值显示数据。

我在下面编写代码。

$majis = St::join('sts.pn', '=', 'pn_list.pn')->get();
return view('contacts.index')->with('majis',$majis);

然后我收到了这个错误

 Illuminate \ Database \ QueryException (42S02)
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'sts.pn' doesn't exist (SQL: select * from `sts` inner join `sts`.`pn` on `=` = `pn_list`.`pn`)

这是我第一次使用内连接。什么是问题?

经过自我测试,我可以将每个标签显示为separete。

此处出现当前错误

SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '=' (SQL: select * from `sts` inner join `pn_list` on `sts`.`pn` = `pn_list`.`pn`)

关于展示。如何在我那些时候写一些foreach  @foreach($记录为$ record)和@foreach($ majis为$ maji)?

当前刀片文件

  @foreach ($records as $record)
        <tr>   
            <td>{{ $record->id }}</td>
            <td>{{ $record->date }}</td>
            <td>{{ $maji->pname }} {{ $maji->pdetail }}</td> 
            <td>{{ $record->memo }}</td>
       </tr>     
  @endforeach

控制器

$majis = St::join('pn_list', 'sts.pn', '=', 'pn_list.pn')->get();
 return view('contacts.index')->with('records',$records)->with('pn',$pn)->with('ename',$ename)->with('pns',$pns)->with('majis',$majis);

我的目标

主表(st)包含大部分数据。  我想补充一些额外的细节。  细节是子表(pns)有。

主表数据是&#34;记录histroy&#34;。  每条记录都有$ pn,表示产品编号。

子表有这些列$ Pn是产品编号,  $ pname是产品名称,$ pdetail是产品详细信息。

例如主记录$ pn是425  子表格响应并显示No.425的产品名称和详细信息。

1 个答案:

答案 0 :(得分:0)

join()的第一个参数必须是表格:

$majis = St::join('pn_list', 'sts.pn', '=', 'pn_list.pn')->get();