2016-10-28 31 views
0

2つの関連するデータベーステーブルからデータを表示しようとしていますが、@foreach - 無効な引数が指定されました。誰かが私が間違っていたことを知り、それを修正する方法を知っていますか? nは1辺をbeeingてデータベース「producten」の関係と「voorraad:uは私がモデル「voorraad」と「producten」その1を持って見ることができるようにここでLaravel 5.2 @foreach - 無効な引数が指定されました

は私のコントローラの機能は

public function index() 
{ 
    return view('Voorraad.index', [ 
    'voorraads' => Voorraad::all(), 
    'Products' => Producten::all() 
    ]); 
} 

です「それらの間の関係のN側を、beeingて

これが私です "Producten "モデル

" これが私のあるモデル

class Voorraad extends Model 

// Model Voorraad has the attributes, Aantal and Id; 

{ 
    protected $fillable = ['voorraadId','aantal']; 
    protected $table = 'Voorraad'; 

public $timestamps = false; 


/* 
* Voorraad can have multiple products; 
* 
*/ 

public function Product() 
{ 
    return $this->HasMany('App\Producten', 'Producten_ProductenId'); 
} 
} 

" voorraad

class Producten extends Model 
{ 

// model producten holdes the attribues naam, inkoopprijs, verkoopprijs, 

protected $fillable = ['productId','naam','inkoopprijs','verkoopprijs']; 
protected $table = 'Producten'; 

public $timestamps = false; 


//producten Belongs to "voorraad" 

public function voorraad() 
{ 
    return $this->belongsTo('App\Voorraad', 'producten_productenId'); 
} 
} 

、これは私が上で私のデータベースモデルを表示するビューです:

@foreach($voorraads as $voorraad) 

    <tr> 
     <td>{{$voorraad->voorraadId}}</td> 
     <td>{{$voorraad->aantal }}</td> 
      @foreach($voorraad->producten as $products) 
      <td>{{ $products->Naam }}</td> 
      <td>{{ $products->InkoopPrijs }}</td> 
      <td>{{ $products->VerkoopPrijs }}</td> 
      @endforeach 
     <td></td> 
     <td></td> 
    </tr> 
    @endforeach 

This is the dd of $voorraads

This is my migration for the voorraad Table 

public function up() 
{ 
    Schema::create('voorraad', function(blueprint $table) 
    { 
      $table->increments('id'); 
      $table->string('naam'); 
      $table->foreign('Locaties_Id') 
      ->reference('Id') 
      ->on('locaties') 
      ->onDelete('cascasde'); 
      $table->foreign('Producten_Id') 
      ->reference('Id') 
      ->on('producten') 
      ->onDelete('cascade'); 
    }); 
} 

、これはproductenテーブル

public function up() 
{ 
    Schema::create('producten', function(blueprint $table) 
    { 
     $table->increments('id'); 
     $table->decimal('inkoopprijs', '10, 2'); 
     $table->decimal('verkoopprijs', '10, 2'); 
     $table->foreign('Fabrieken_Id') 
     ->reference('Id') 
     ->on('fabrieken') 
     ->onDelete('cascasde'); 
    }); 
} 
+0

動作するはずですあなたは、モデル内のメソッドを変更した場合

@foreach($voorraad->producten as $products)

を呼び出すことで関係にアクセスしようループされている実際のデータが提供されていない限り、foreachの何が問題なのかを知ることは不可能に近づきます。つまり、 '$ voorraads'をダンプして質問に追加します。 – Andrew

答えて

1
のための私の移行であります

問題はVoorraadモデルにあります。関係定義さ:

public function Product() 
{ 
    return $this->HasMany('App\Producten', 'Producten_ProductenId'); 
} 

をしかし、ビューで、あなたは、それはそれだ

public function producten() 
{ 
    return $this->HasMany('App\Producten', 'Producten_ProductenId'); 
} 
+0

このレスポンスのために@trommelaapに感謝しますが、メソッド名を変更したときに別のエラーが発生しましたが、このエラーが発生しました: 'code'SQLSTATE [42S22]:列が見つかりません:1054不明な列 'Producten.Producten_Id' in ' 'Producten'から 'Producten'.Producten_Id'がヌルで、' Producten'.Producten_Id'がnullでないところからSQLを選択してください)私は自分のデータベースに何を変更する必要があるか考えていますか? –

+0

これはあなたが関係を間違って設定したことを意味します。 – trommelaap

+0

Voorraadモデルのproductenメソッドの2番目の引数は、Voorraadテーブルに関連するproductenテーブルの外部キー列の名前にする必要があります。おそらくvoorrraad_id? 2つのテーブルの移行を投稿してください。 – trommelaap

関連する問題