簡體   English   中英

調用歸屬返回null laravel

[英]invoke belongsTo return null laravel

數據庫中的表是地址'address_type_id','address_type_id','line1','line2','line3','country','city','zip_code','other_detail','geo_location_id'

地址類型表'address_type_id''address_type_name'

這是我的模特

public function Users(){
    return $this->hasOne('User','address_id');
}

public function Address_Type(){
    return $this->belongsTo('Address_Type','address_type_id','address_type_id');
}

public function Geo_Location(){
    return $this->belongsTo('Geo_Location','geo_location_id','geo_location_id');
}

}

public function Address(){
    return $this->hasMany('Address','address_type_id','address_type_id');
}

}

在控制器中,當我嘗試獲取這樣的地址類型時

$address1=Address::find(1);

$geo=$address1->Geo_Location;
return Response::json(
    array(
        'error'   => false,
        'Address_Type' =>$address1->Address_Type),

    200
);

}); 結果返回null

問題是您的關系方法的命名。 在執行$address1->Address_Type ,將發生以下情況:

首先, __get() Illuminate\\Database\\Eloquent\\Model __get() ,它替代了getAttribute() 在這里,它首先檢查其他一些內容,然后是:

$camelKey = camel_case($key);

if (method_exists($this, $camelKey))
{
    return $this->getRelationshipFromMethod($key, $camelKey);
}

如您所見,屬性名稱Address_Type被轉換為camelCase。 它成為addressType

現在,盡管PHP不在乎它是AddressType還是aDdReSsTyPe ,但下划線會aDdReSsTyPe

解決方案

更改您的關系名稱。 我建議使用addressTypegeoLocation但是正如我之前提到的,唯一重要的是您丟失了_

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM