Je dois faire une plate-forme de conseil pour les produits. L'utilisateur peut faire des conseils dans la section du produit. Donc, le produit a de nombreux conseils. Aussi conseils du produit de l'appartenance. Mais sur produit_advices em>, j'ai produit_id em> et produit_advice_id em> ces deux désignent à la table ID sur les produits.
Alors voici le problème. Je peux prendre des conseils de la table de produits_advices qui fait référence à Product_ID. Mais comment puis-je emprunter l'autre comme produit. Je ne pouvais pas faire une relation avec Eloquent entre eux. P> //Product Model
public function advices()
{
return $this->hasMany('App\ProductAdvice', 'product_id');
}
//ProductAdvice Model
protected $table = 'product_advices';
public function product() {
return $this->belongsTo('App\Product', 'product_id');
}
//Product Advice Table
Schema::create('product_advices', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->text('body')->nullable();
$table->integer('product_id')->unsigned();
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
$table->integer('product_advice_id')->unsigned();
$table->foreign('product_advice_id')->references('id')->on('products')->onDelete('cascade');
$table->timestamps();
});
3 Réponses :
Après votre réponse, j'ai compris ce que vous voulez. p>
Il suffit de mettre à jour votre modèle de productadvice pour avoir une autre relation, comme: p>
$advice->product->name
Post mis à jour. produit_advice_id fait référence à un autre produit recommandé pour Product_ID. Chaque produit a sa propre page et l'utilisateur peut recommander un produit à un autre produit. Peut-être que cela peut être décrit comme marquage.
produit = Apple code>
$ produit -> conseils-> message = message = message code>
$ produit-> conseils-> produit = produit recommandé à Apple code > C'est ce que je veux faire.
Merci pour l'explication, je pense que je le comprends maintenant. Vérifiez ma réponse mise à jour.
Oui ça a fonctionné mais je ne pouvais pas comprendre comment le produit_advice_id y travaille même si le produit_advice_id n'existe pas sur la table des produits. Je ne pouvais pas m'en souvenir. Merci BTW :) Réponse acceptée.
Donc, si vous comprenez bien, vous voulez et conseils du produit A pour renvoyer le nom du produit B. Vous pouvez en créer une méthode multiple liée au même modèle.
Vos modèles sembleront similaires à ce sujet: P> alors vous devrez créer une autre colonne dans votre Nom du talbe: like_id (cela pourrait être autre chose, il suffit de faire correspondre à votre modèle. Vous pouvez également modifier la méthode des relations () et de la relation () à n'importe quel nom que vous souhaitez.) p> Après cela stocker vos données. Vous devez rendre votre code associé au bon modèle de produit dans votre produit_id et dans Catégorie_id. Par ici. Vous pouvez avoir $ conseil-> Produit-> Nom === 'iPhone' && $ conseil-> Relation-> Nom === 'Samsung S10' Code> P> P> P> P> P> P>
a trouvé une solution comme celle-ci pour l'instant.
// productAdvice modèle p> // modèle produit p> @foreach($product->advices as $advice)
<li>{{ $advice->body }} - {{ $advice->advicedProduct()->name }}</li>
@endforeach
La relation entre produit et productAdvice est correctement définie. Que voulez-vous dire par l'autre? Vous essayez d'obtenir le nom du produit dans le produit_advice?
@Eliemorin Oui, je veux prendre le nom du produit informé avec le commentaire de l'utilisateur. Publier mis à jour pour ajouter des colonnes de table.
Regardez la réponse, cela pourrait aider. Je pense que le vrai problème est où vous appelez cette fonction. Pouvez-vous nous montrer du code où vous essayez d'utiliser des conseils-> Produit-> Nom.