質問

ordercardを充電するのに到達するために単一のクエリを実行しようとしていますが、エラーが発生しました。

カードモデル:

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

これは明らかにうまくいかないため、いくつかのコンボを試してみました。問題は私のモデル/関係であると思います。

カード/トークンの詳細を付けて注文を取り戻すことができる方法はありますか?

DB情報:各注文は1つのcard_idのみを持ち、各カードは多くの注文である可能性があります。カードには属の発電所標本はありません。

ORDERSテーブル基本的に:

id | card_id
.

カードテーブル:

id | token
.

order_id COLをtokenで戻そうとしています。

役に立ちましたか?

解決

Orderモデルでは、これを変更する必要があります。

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

これに:

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

その理由は、hasMany関係の逆数を定義していることです。belongsTo関係を使用すると、Eloquentはcard_idテーブルのorders列を探します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top