2016-12-18 12 views
1

Laravelで1対1の関係を示すのに問題があります。@foreachループでLaravelブレードと1対1の関係

Iは、DB内のテーブルことがあります メーカー defaul Laravel ID欄とメーカーテーブルからIDをreleated MANUFACTURER_IDカラムとcashregisters有します。私はモデルで

こと:

Cashregister

class Cashregister extends Model 
{ 
    protected $table = "cashregisters"; 

    public function manufacturer(){ 

     return $this->hasOne('App\Manufacturer','id'); 

    } 
} 

メーカー

class Manufacturer extends Model 
{ 
    protected $table = "manufacturers"; 

    public function cashregisters(){ 

     return $this->belongsTo('App\Cashregister'); 

    } 
} 

私はこれはOKだと思います。私はそのループを行うcashregistersインデックスビューで

$cashregisters = Cashregister::all(); 
return view('cashregisters.index')->withCashregisters($cashregisters); 

<tbody> 
    @foreach ($cashregisters as $cashregister) 
    <tr> 
    <th>{{ $cashregister->id }}</th> 
    <td>{{ $cashregister->manufacturer_id }}</td> 
         ...... 
    <td>{{ $cashregister->DataNastPrzegUrzFisk }}</td> 
    @endforeach 
    </tr> 
    </tbody> 

をそして、それは素晴らしい作品次の私は、そのインデックスで()CashregisterControllerで行います。 現金登録番号テーブルのすべてを表示してください。

私はMANUFACTURER_IDの代わりにメーカー名を表示したいので、私はこのことを行う試してください。

<td>{{ $cashregister->manufacturer->name }}</td> 

Buは私はエラーを得ました。

<td>{{ $cashregister->manufacturer->name}}</td> 
:。

次は私がすべてのテーブルの後にそのコードを実行するとそのこと

@foreach ($cashregisters as $cashregister) 
     <tr> 
     <th>{{ $cashregister->id }}</th> 
     @foreach ($cashregister->manufacturer() as $item) 
     <td>{{ $item->name}}</td> 
     @endforeach 
          ...... 
     <td>{{ $cashregister->DataNastPrzegUrzFisk }}</td> 
     @endforeach 
     </tr> 
     </tbody> 

しかし、誰も私はそれを修正するために助けることができます:(コードショー何のこの部分を行う、インターネットをsearchoverとしてみてください

それはいくつかの情報を表示するので、私は関係がOKだと思います

答えて

2

あなたはこのように、メーカーローカルキーを設定する必要があります。

class Cashregister extends Model 
{ 
    protected $table = "cashregisters"; 

    public function manufacturer(){ 

     return $this->hasOne('App\Manufacturer','id', 'manufacturer_id'); 

    } 
} 
+0

ありがとう!それは問題を解決しました:)私はそれをserahc "manufacturer_id"手動でwhitnk whitnk。 – Arlid

0

使用with()関係ロードするために:。

0を
$cashregisters = Cashregister::with('manufacturer')->all(); 

次に、このメーカーが表示されます:

$cashregister->manufacturer->name