Pregunta

Estoy intentando hacer una sola consulta para recuperar un order y el card para cargar, pero aparece un error.

Modelo de tarjeta:

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

Modelo de pedido:

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

Lo que estoy tratando de recuperar:

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

Obviamente esto no funciona y he probado varias combinaciones.Creo que el problema está en mis modelos/relaciones.

¿Alguna idea de cómo puedo recuperar el pedido con los detalles de la tarjeta/token?

Información de la base de datos:Cada pedido puede tener solo uno card_id y cada tarjeta puede estar en muchos pedidos.No hay order_id en la tarjeta.

Tabla de pedidos básicamente:

id | card_id

Mesa de cartas:

id | token

Tratando de conseguir el token col para regresar con el Order.

¿Fue útil?

Solución

En tus Order modelo, necesitas cambiar esto:

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

a esto:

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

La razón es que estás definiendo la inversa de la hasMany relación.Con el belongsTo relación, Eloquent buscará una card_id columna en el orders mesa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top