Domanda

Sto cercando di eseguire una singola query per recuperare un order e il card da caricare, ma ottenere un errore.

Modello di carta:

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

Modello di ordine:

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

Cosa sto cercando di tornare:

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

Questo ovviamente non funziona e ho provato diverse combinazioni.Penso che il problema sia con i miei modelli / relazioni.

Qualche idea come posso recuperare l'ordine con i dettagli della carta / del token?

DB INFO: ogni ordine può avere solo un card_id e ogni carta può essere in molti ordini.Non esiste order_id nella carta.

Ordini tabella fondamentalmente:

id | card_id
.

Tabella delle carte:

id | token
.

Cercando di ottenere il token Col per tornare con il Order.

È stato utile?

Soluzione

Nel modello Order, è necessario modificare questo:

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

A questo:

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

Il motivo è che stai definendo l'inverso della relazione hasMany.Con la relazione belongsTo, eloquente cercherà una colonna card_id sulla tabella orders.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top