2016-06-07 4 views
0

그래서 나는이 같은 'Product.php'모델 OrderProduct.php 사이의 관계를 정의 :관계가 작동하지 않습니다. 각각. Laravel

OrderProduct.php을 :

public function product() 
{ 
    return $this->belongsTo('App\Product'); 
} 

Product.php

public function order() 
{ 
    return $this->belongsTo('App\OrderProduct'); 
} 

OrderController 기능

public function orderShow($id) 
{ 
    //$order = Order::where('id', $id)->first(); 
    $products = OrderProduct::where('id', 32)->first(); 
    return view('admin.orders.show', compact('order', 'products')); 
} 

나는이 foreach는 수행 할 때

@foreach($products as $product) 
        <?php dd($product) ?> 
@endforeach 

내가 Invalid argument supplied for foreach() 얻을 어떻게이 문제를 해결하려면?

+0

OrderProduct :: 곳 (' id ','32 ') -> first(); ---> 하나의 제품 만 호출하십시오. –

+0

-> die and dump = exit code –

+0

@labas GamePage 문제는 아래의 ansrwes에 의해 해결되었지만 다음과 같이 제안합니다. 두 모델 모두에서 belongsTo()를 정의합니다. 두 가지 중 하나에 hasMany() 또는 hasOne()을 사용하십시오. –

답변

1

설정에서 첫 번째 레코드가 있습니다.
시도

public function orderShow($id) 
{ 
    //$order = Order::where('id', $id)->get(); 
    $products = OrderProduct::where('id', 32)->get(); 
    return view('admin.orders.show', compact('order', 'products')); 
} 

편집

당신이 (당신이 docs에서 찾을 수 차이), ID에 의해 특정 레코드를 검색 find() 또는 findOrFail() 방법을 사용해야하는 경우;

public function orderShow($id) 
{ 
    // this will retrieve record with id=32 from db if it exists, 
    // and throw Illuminate\Database\Eloquent\ModelNotFoundExceptio otherw 
    $product = OrderProduct::findOrFail(32); 

    return view('admin.orders.show', compact('product')); 
} 

는 블레이드 템플릿에 당신은 당신이이 같은 시도해야하므로

{{ $product->name }} 
{{ $product->otherProductProperty }} 
+0

이제 오류가 없습니다. 그러나 나는 아직도 어떤 제품 정보도 얻지 않는다. –

+0

블레이드에'{{dd ($ products)}}'를 넣고 무엇이 보이는지 보여주십시오. – huuuk

+0

'Collection {# 254 ▼ #items : [] } –

0

당신은 당신이 foreach는 할 수없는, 그래서 결과가 수집되지 않습니다 당신에게 하나 개의 기록을 가져옵니다

$products = OrderProduct::where('id', 32)->first(); 

을주는이

당신은

$products = OrderProduct::where('id', 32)->get(); 
로 변경할 수 있습니다

작동 시키려면

사용 된 관계를 확인해야합니다. 하나는 속해 있고 다른 하나는 많이 있습니다

0

같은 객체로 $product 정보에 액세스 할 수 있습니다 ..

public function orderShow($id) 
    { 
     //$order = Order::where('id', $id)->get(); 
     $products = OrderProduct::where('id', 32)->with('product')->get(); 
     return view('admin.orders.show', compact('order', 'products')); 
    } 
관련 문제