Laravel 5关系问题

时间:2018-01-22 08:10:46

标签: php laravel

在我的订单表中,我得到user_idaddress_id两个列的关系是相同的,我可以从users表中获取信息,但不能从addresses表中获取信息!

Order型号:

public function user() {
    return $this->belongsTo(User::class);
  }

  public function address(){
     return $this->belongsTo(Address::class, 'address_id');
  }

Address型号:

public function user(){
     return $this->belongsTo(User::class);
  }

    public function order(){
         return $this->belongsTo(Order::class);
      }

user模型(仅供比较)

public function orders(){
       return $this->hasMany(Order::class);
    }

public function addresses(){
       return $this->hasMany(Address::class);
    }

现在我可以获取用户信息,例如

{{$order->user->name}}

但无法获取我的地址信息,例如:

{{$order->address->address}}

我得到的错误:

  

尝试获取非对象的属性

任何想法?

更新

Order {#878 ▼
  #fillable: array:11 [▶]
  #casts: array:1 [▶]
  #connection: "mysql"
  #table: null
  #primaryKey: "id"
  #keyType: "int"
  +incrementing: true
  #with: []
  #withCount: []
  #perPage: 15
  +exists: true
  +wasRecentlyCreated: false
  #attributes: array:17 [▼
    "id" => 17
    "ordernu" => "4491084283"
    "user_id" => 1
    "orderstatus_id" => 7
    "address_id" => 2
    "payment_id" => null
    "product_name" => ""[{\"id\":29,\"name\":\"effewf\",\"price\":24524,\"quantity\":1,\"attributes\":[{\"attr\":{\"label\":\"Gray\",\"price\":\"7000.00\"}},{\"attr\":{\"label\":\"Red ▶"
    "product" => null
    "quantity" => null
    "price" => null
    "note" => "xxxxxxx"
    "address" => null
    "phone" => "xxxxxx"
    "buyer_name" => "xxxxxxxxxx"
    "buyer_email" => "admin@admin.com"
    "created_at" => "2018-01-22 14:39:58"
    "updated_at" => "2018-01-22 14:39:58"

addresses

screen1

1 个答案:

答案 0 :(得分:1)

address模型中有Order个属性,这就是为什么你总是得到null的原因。这将返回属性而不是相关地址:

$order->address

因此,重命名关系以使其有效:

public function orderAddress()
{
    return $this->belongsTo(Address::class, 'address_id');
}

并使用它:

{{ $order->orderAddress->address }}