Question

J'essaie de faire une seule requête pour récupérer un order et le card charger, mais obtenir une erreur.

Modèle de carte :

class Card extends Eloquent {
    protected $guarded = array();

    public static $rules = array();

    public function user()
    {
        return $this->belongsTo('User');
    }

    public function orders()
    {
        return $this->hasMany('Order');
    }
}

Modèle de commande :

class Order extends Eloquent {
    protected $guarded = array();

    public static $rules = array();

    public function user()
    {
        return $this->belongsTo('User');
    }

    public function card()
    {
        return $this->hasOne('Card');
    }

    public function address()
    {
        return $this->belongsTo('Address');
    }

    public function orderItems()
    {
        return $this->hasMany('OrderItem');
    }
}

Ce que j'essaie de récupérer :

$order = Order::with('card')->find($id);

Cela ne fonctionne évidemment pas et j'ai essayé plusieurs combos.Je pense que le problème vient de mes modèles/relations.

Avez-vous une idée de la façon dont je peux récupérer la commande avec les détails de la carte/du jeton ?

Informations sur la base de données :Chaque commande ne peut avoir qu'un seul card_id et chaque carte peut être dans plusieurs commandes.Il n'y a pas order_id dans la carte.

Tableau des commandes en gros :

id | card_id

Tableau des cartes :

id | token

Essayer d'obtenir le token col pour revenir avec le Order.

Était-ce utile?

La solution

Dans ton Order modèle, vous devez changer ceci :

public function card()
{
    return $this->hasOne('Card');
}

pour ça:

public function card()
{
    return $this->belongsTo('Card');
}

La raison est que vous définissez l'inverse du hasMany relation.Avec le belongsTo relation, Eloquent recherchera un card_id colonne sur le orders tableau.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top