Laravel Eloquent имеет множество и принадлежит многим, не возвращая использование с

StackOverflow https://stackoverflow.com//questions/25028896

  •  21-12-2019
  •  | 
  •  

Вопрос

Я пытаюсь выполнить один запрос, чтобы получить обратно order и card для зарядки, но получаю сообщение об ошибке.

Модель карты:

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

Модель заказа:

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

То, что я пытаюсь вернуть:

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

Это, очевидно, не работает, и я перепробовал несколько комбинаций.Я думаю, что проблема в моих моделях / отношениях.

Есть идеи, как я могу вернуть заказ с реквизитами карты /токена?

Информация о базе данных:В каждом заказе может быть только один card_id и каждая карточка может быть во многих порядках.Здесь нет order_id в карточке.

Таблица заказов в основном:

id | card_id

Карточный стол:

id | token

Пытаюсь получить token кол, чтобы вернуться с Order.

Это было полезно?

Решение

В вашем Order модель, вам нужно изменить это:

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

к этому:

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

Причина в том, что вы определяете значение, обратное значению hasMany отношения.С belongsTo отношения, Красноречивый будет искать card_id колонка на orders стол.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top