【问题标题】:Invalid argument supplied for foreach() in Laravel and change在 Laravel 中为 foreach() 提供的参数无效并更改
【发布时间】:2015-06-30 01:53:35
【问题描述】:

我这里有双 foreach:

ID 国际标准书号 克拉西菲卡西 洛卡西 Cp_Or 塔洪 ID_Master_Buku 杰尼斯 状态 Tgl_Masuk can_issue ID 埃迪西 彭加朗 描述 佩内比特 朱杜尔 Jumlah_Buku 国语 甘巴 苏杰克 托皮克
@foreach($bukus as $buku)
dd($buku)
@foreach($buku->tmbuku as $item)
<tr>
        <td>{{$buku->ID}}</td>        
        <td>{{$buku->ISBN}}</td>
        <td>{{$buku->Klasifikasi}}</td>
        <td>{{$buku->Lokasi}}</td>
        <td>{{$buku->Cp_Or}}</td>
        <td>{{$buku->Tahun}}</td>
        <td>{{$buku->ID_Master_Buku}}</td>
        <td>{{$buku->Jenis}}</td>
        <td>{{$buku->Status}}</td>
        <td>{{$buku->Tgl_Masuk}}</td>
        <td>{{$buku->can_issue}}</td>
        <td>{{$item->ID}}</td>
        <td>{{$item->Edisi}}</td>
        <td>{{$item->Pengarang}}</td>     
        <td>{{$item->Deskripsi}}</td>
        <td>{{$item->Penerbit}}</td>
        <td>{{$item->Judul}}</td>
        <td>{{$item->Jumlah_Buku}}</td>
        <td>{{$item->Bahasa}}</td>
        <td>{{$item->Gambar}}</td>        
        <td>{{$item->Subjek}}</td>
        <td>{{$item->Topik}}</td>
        @endforeach
</tr>
@endforeach
 </table>

这是我的控制器:

得到(); return View::make('EagerLoading.index',compact('bukus')); } }

我这里有模型

hasMany('TDbuku','ID','ID_Master_Buku'); } }

然后我得到了错误:

在 Laravel 中为 foreach() 提供的参数无效

当我像这样更改行代码时:

return $this->hasMany('TDbuku','ID_Master_Buku','ID');

我收到了这个错误

SQLSTATE[42S22]:未找到列:1054 未知列 'where 子句'中的't_m_buku.ID_Master_Buku'(SQL:select * from t_m_buku 其中t_m_buku.ID_Master_Buku in (01.00001, 01.00002)

你能告诉我那里有什么问题吗? 我想使用 eagerLoading 从 2 个表中选择所有数据

【问题讨论】:

  • 很简单,看看你的错误。您的 t_m_buku.ID_Master_Buku 专栏似乎不存在。
  • 是的,就是这样。我不需要成功。怎么可能,我该如何解决?

标签: php laravel foreach eager-loading


【解决方案1】:
  1. 型号 TMbuku:

     class TMbuku extends \Eloquent{
    
      public function tdbukus(){
         return $this->hasMany('TDbuku','ID','ID_Master_Buku');
      }
    }
    
  2. 型号 TDbuku:

     class TDbuku extends \Eloquent{
    
         public function tmbukus(){
    
         return $this->belongsToMany('TMbuku');
       }
    
     }
    

在任何控制器中你都可以得到这样的:

$tmbukus = TMbuku::with('tdbukus')->get();
$tmbukus = $tmbukus->toArray();
echo '<pre>'; print_r($tmbukus); exit;

【讨论】:

  • 我得到了这个数组([0] => 数组([ID] => 01.00001 [ISBN] => 9795523406 [Klasifikasi] => 005.133 Tos c Kp.1 [Lokasi] => Lt. 1、R18/3 [Cp_Or] => 原[Tahun] => 2000 [ID_Master_Buku] => 574 [Jenis] => 16 [Status] => 4 [Tgl_Masuk] => 2011-07-26 [can_issue] => nono [tmbuku] => ) 是否意味着另一个表中没有数据?我该如何解决?
  • 把它放在你的控制器中,然后将 sql 查询复制/粘贴到 phpmyadmin 中: - $tmbukus = $tmbukus->toArray(); $queries = DB::getQueryLog();$last_query = end($queries); print_r($last_query);退出;
猜你喜欢
  • 2018-12-09
  • 1970-01-01
  • 2015-06-29
  • 2017-02-15
  • 2017-05-03
  • 1970-01-01
  • 1970-01-01
  • 2022-01-27
  • 2018-02-26
相关资源
最近更新 更多