Frage

Ich versuche eine einzelne Abfrage durchzuführen, um eine zurückzubekommen order und die card aufladen, aber es wird eine Fehlermeldung angezeigt.

Kartenmodell:

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');
    }
}

Bestellmodell:

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');
    }
}

Was ich versuche zurückzubekommen:

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

Das funktioniert offensichtlich nicht und ich habe mehrere Combos ausprobiert.Ich denke, das Problem liegt bei meinen Modellen / Beziehungen.

Irgendeine Idee, wie ich die Bestellung mit den Karten- / Token-Details zurückbekommen kann?

DB Infos:Jede Bestellung kann nur eine haben card_id und jede Karte kann in vielen Bestellungen sein.Es gibt keine order_id in der Karte.

Bestelltabelle grundsätzlich:

id | card_id

Kartentisch:

id | token

Versuchen, das zu bekommen token col, um mit dem zurückzukehren Order.

War es hilfreich?

Lösung

In Ihrem Order modell, sie müssen dies ändern:

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

zu diesem:

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

Der Grund ist, dass Sie die Umkehrung der definieren hasMany Beziehung.Mit dem belongsTo beziehung, Eloquent wird nach einem suchen card_id spalte auf der orders Tabelle.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top