我有问题一个产品有很多`spesifikasi'就像这个例子
http://
使用此代码
我的控制器
Produk 1
Spek a
Spek b
Spek c
Produk 2
Spek x
Spek y
我的观点
public function getDashboard() {
$produk = Produk::all();
$spesifikasi = SpesifikasiProduk::all()->take(2);
return View::make('admin-page.admin-produk')
-> with('produk', $produk )
-> with('spesifikasi', $spesifikasi);
}
我得错了结果
它变成了这样的东西
@foreach ( $produk as $produk )
<tr>
<td>{{ $produk['nama_produk']}}</td>
<td>{{ substr($produk['deskripsi'], 0, 130).' . . .' }}</td>
<td>
@foreach ( $spesifikasi as $spek )
{{ $spek['title_spek'] }} : {{ $spek['spek'] }} ||
@endforeach
</td>
<td><img src="../{{ $produk['display_thumb'] }}"></td>
我得到一条痘痘线索,我错过了
在foreach spesifikasi(查看)我应该给出一些条件
但我不知道如何解决它
我的数据库结构是这样的
Produk 1
Spek a
Spek b
Spek c
Spek x
Spek y
Produk 2
Spek a
Spek b
Spek c
Spek x
Spek y
更新 Armen Markossyan
这是我的模特
Produk.php
produk { id_produk, nama_produk, deskripsi, dispaly_thumb, created_at, updated_at}
produk_spek { id_spek, id_produk, title_spek, spek, created_at, updated_at }
SpesifikasiProduk.php
<?php
class Produk extends Eloquent {
protected $table = 'produk';
protected $primaryKey = 'id_produk';
protected $fillable = array('id_produk', 'nama_produk', 'deskripsi', 'display_thumb');
public function SpesifikasiProduk() {
return $this->hasMany( new SpesifikasiProduk, 'id_produk');
}
public function ImageProduk() {
return $this->hasMany(new ImageProduk, 'id_produk');
}
}
我已经改变成这样了
我的控制器
<?php
class SpesifikasiProduk extends Eloquent {
protected $table = 'produk_spek';
protected $primaryKey = 'id_spek';
protected $fillable = array('id_produk', 'title_spek', 'spek');
public function produk() {
return $this->belongsTo('Produk');
}
}
我的观点
public function getDashboard() {
$produk = Produk::with('SpesifikasiProduk')->all();
return View::make('admin-page.admin-produk')
-> with('produk', $produk );
}
但我仍然会收到这样的错误
@foreach ( $produk as $produk )
<tr>
<td>{{ $produk['nama_produk'] }}</td>
<td>{{ substr($produk['deskripsi'], 0, 130).' . . .' }}</td>
<td>
@foreach ( $produk->SpesifikasiProduk as $spek )
{{ $spek['title_spek'] }} : {{ $spek['spek'] }} ||
@endforeach
</td>
@endforeach
我缺少什么?
扩展*可能创建新主题
Call to undefined method Illuminate\Database\Query\Builder::all()
让我们说produk A有4个spesification
produk B有3个spesification
produk Chas 5 spesification
使用上面的代码,它会给出类似这样的结果
public function SpesifikasiProduk() {
return $this->hasMany( new SpesifikasiProduk, 'id_produk')->take(2);
}
如果我将Produk A
- spek 1
- spek 2
Produk B
produk C
值更改为6
结果是
take
答案 0 :(得分:1)
你必须阅读有关人际关系的信息: http://laravel.com/docs/master/eloquent-relationships#defining-relationships
阅读你自己的话:“一个产品有很多spesifikasi”。这意味着您可以在Produk
和SpesifikasiProduk
之间建立“hasMany”关系。
请执行以下操作:
// Produk model
<?php
namespace App\Models;
class Produk extends \Eloquent {
public function spesifikasi()
{
return $this->hasMany(new SpesifikasiProduk, 'id_produk');
}
}
您的控制器代码:
public function getDashboard() {
$produk = Produk::with('spesifikasi')->get();
return View::make('admin-page.admin-produk')
-> with('produk', $produk);
}
您的观点:
@foreach ( $produk as $produk )
<tr>
<td>{{ $produk['nama_produk']}}</td>
<td>{{ substr($produk['deskripsi'], 0, 130).' . . .' }}</td>
<td>
@foreach ( $product->spesifikasi as $spek )
{{ $spek['title_spek'] }} : {{ $spek['spek'] }} ||
@endforeach
</td>
<td><img src="../{{ $produk['display_thumb'] }}"></td>
@foreach
祝你好运!
<强> UPD:强>
有很多方法可以达到你想要的效果。
最简单的方法是使用@for
代替@foreach
:
@for ($i = 0; $i < 2; $i++)
{{ $product->spesifikasi[$i]['title_spek'] }} : {{ $product->spesifikasi[$i]['spek'] }} ||
@endfor
当然,您必须从模型中删除take(2)
。