Ich bin ein Beispiel E-Commerce-Website mit Laravel Schreiben 5. Ich habe 2 Tische:Laravel 5: Beziehung zwischen Produkten und funktionsfähige Produkte
Schema::create('products', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->text('description');
$table->float('price');
$table->integer('category_id');
$table->timestamps();
});
und
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');
});
Modelle
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');
}
}
Dann habe ich eine Controller
, wo ich 4 featured products
nehmen:
$featured_products = Featured::limit(4)->get();
return view('home', ['featured_products' => $featured_products]);
Nun, ich versuche, diese vorgestellten Produkte in meiner Ansicht zu zeigen. Wenn ich die product_id
vom Featured model
zeigen, alles ist in Ordnung:
@foreach($featured_products as $prod)
{{$prod->product_id}}
@endforeach
Aber ich will den Namen des product
durch die vorge bezeichnet nehmen. Ich habe versucht, auf diese Weise:
@foreach($featured_products as $prod)
@foreach($prod as $p)
{{$p->name}}
@endforeach
@endforeach
Da featured_products
(im controller
) scheint eine Sammlung zu sein, aber es funktioniert nicht!
Hallo, zuerst danke für die Hilfe. Ich habe diesen Weg versucht, aber es gibt folgendes zurück: 'ErrorException in Connection.php Zeile 673: SQLSTATE [42S22]: Spalte nicht gefunden: 1054 Unbekannte Spalte 'products.product_id' in 'Where-Klausel' (SQL: wählen Sie * aus 'products' wo 'products'. 'product_id' ist null und 'products'. 'product_id' ist kein Null-Limit 1) (View:/home/vagrant/Code/projects/mwt-lamp/resources/views/widgets/featured .blade.php) (View: /home/vagrant/Code/projects/mwt-lamp/resources/views/widgets/featured.blade.php) ' – luca89pe
Sorry meine schlechte, ich denke, Sie definieren eine falsche Beziehung, Ihr 'Produkt' Modell, sollte eine' featured() 'Methode, die' hasOne' Beziehung verwenden, während 'Featured' Modell sollte ein' Produkt () 'Methode mit der' goesTo' Relation. Also müssen Sie in Ihrem "App \ Featured" -Modell die Beziehung wie folgt definieren: return $ this-> objectsTo ('App \ Product'); '. Und in Ihrem 'App \ Product' Modell sollten Sie eine Relation definieren wie' return $ this-> hasOne ('App \ Featured'); '. Hoffe, es funktioniert –
Ja, es funktioniert, ich habe nur 'hasOne' zu' gehörtTo' auf Funktion 'Produkt()' in 'Featured' Modell geändert. Können Sie die Antwort bearbeiten, sodass ich sie als Antwort festlegen kann? Vielen Dank – luca89pe