Pergunta

Estou tentando fazer uma única consulta para retornar um order e a card para carregar, mas recebendo um erro.

Modelo de cartão:

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

O que estou tentando recuperar:

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

Obviamente isso não funciona e tentei vários combos.Acho que o problema está nos meus modelos/relacionamentos.

Alguma ideia de como posso recuperar o pedido com os detalhes do cartão/token?

Informações do banco de dados:Cada pedido pode ter apenas um card_id e cada cartão pode estar em vários pedidos.Não há order_id no cartão.

Tabela de pedidos basicamente:

id | card_id

Mesa de cartas:

id | token

Tentando obter o token col para retornar com o Order.

Foi útil?

Solução

Na tua Order modelo, você precisa alterar isso:

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

para isso:

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

A razão é que você está definindo o inverso do hasMany relação.Com o belongsTo relacionamento, Eloquent procurará um card_id coluna no orders mesa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top