Ben laravel 5. ile örnek bir e-ticaret web sitesi yazıyorum arasındaki ilişki Ben 2 Tablolar var:laravel 5: ürün ve özellikli ürünler
Schema::create('products', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->text('description');
$table->float('price');
$table->integer('category_id');
$table->timestamps();
});
ve
Schema::create('featureds', function (Blueprint $table) {
$table->integer('product_id')->unique()->unsigned();
});
Schema::table('featureds', function($table) {
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
});
Modelleri
class Product extends Model
{
public function category(){
return $this->belongsTo('App\Category');
}
}
class Featured extends Model
{
public function product(){
return $this->hasOne('App\Product', 'product_id');
}
}
O halde,Ben 4 featured products
almak,: Artık
$featured_products = Featured::limit(4)->get();
return view('home', ['featured_products' => $featured_products]);
, benim görünümünde olan bu özellikli ürünleri göstermek için çalışıyorum. i Featured model
den product_id
gösteriyorsa, herşey yolunda:
@foreach($featured_products as $prod)
{{$prod->product_id}}
@endforeach
Ama özellikli tarafından yönlendirilen product
adını almak istiyorum. Ben bu şekilde çalıştı:
@foreach($featured_products as $prod)
@foreach($prod as $p)
{{$p->name}}
@endforeach
@endforeach
featured_products
Çünkü (controller
olarak) bir koleksiyon gibi görünüyor, ama çalışmıyor! görünümden ilişkiyi erişmek istediğinizde sizin Featured
modelde
Hi işleri Umut:
Ve şöyle ilişkiyi tanımlamak gerekir sizin
App\Product
modelinde: YaniApp\Featured
modelinde, böyle ilişkiyi tanımlamak zorunda Yardım için teşekkürler. Bu yolu denedim, ancak şu döndürüyor: 'ErrorException Connection.php satırında 673: SQLSTATE [42S22]: Sütun bulunamadı: 1054 Bilinmeyen sütun 'products.product_id' in 'where cümlede' (SQL: select * from) 'Ürünler' nerede 'product'. 'product_id' null ve 'products'. 'product_id' null limit 1 değil. (Görüntüle:/home/vagrant/Code/projects/mwt-lamp/resources/views/widget/özellikli .blade.php) (Görünüm: /home/vagrant/Code/projects/mwt-lamp/resources/views/widgets/featured.blade.php) ' – luca89peÜzgünüm benim hatam, Featured' modeli' ürünü olmalıdır 'ederken,' hasOne' ilişkisini kullanan bir 'özellikli()' yöntem olmalıdır, yanlış bir ilişki tanımlıyorsanız sizin 'Product' modelini tahmin ('' belongsTo' yöntemini kullanarak yöntem. Yani 'App \ Featured' modelinde, bu gibi bir ilişkiyi tanımlamanız gerekir: 'return $ this-> belongsTo ('App \ Product');'. '; Ve' App \ Product' modelinde Eğer ('App \ Seçme')> gibi ilişki böylece '$ this- dönmek hasOne tanımlamalıdır. o 'Featured' modeline işlev' ürün() 'üzerinde belongsTo'' üzere –
Evet, çalışıyor, ben sadece değişmiş 'hasOne' çalışır Umut. Cevabı düzenleyebilir misiniz, ben de Cevap olarak ayarlayabilir miyim? , size – luca89pe