2015-03-13 2 views
1

Я пытаюсь обновить существующий проект Laravel 4 до версии 5. Модельные отношения не работают нормально. Каждый раз, когда я пытаюсь получить доступ к свойству из таблицы property_price, он возвращает null.Обновление Laravel от 4 до 5: неработающие отношения

Мои модели находятся в каталоге App/Models.

Модель недвижимости

class Property extends \Eloquent { 

    protected $guarded = array('id'); 

    protected $table = 'properties'; 

    use SoftDeletes; 

    protected $dates = ['deleted_at']; 
    protected $softDelete = true; 

    public function propertyPrice() 
    { 
     return $this->hasOne('PropertyPrice','pid'); 
    } 
} 

PropertyPrice Модель

class PropertyPrice extends \Eloquent { 

    protected $guarded = array('id'); 

    protected $table = 'property_pricing'; 

    public function property() 
    { 
     return $this->belongsTo('Property'); 
    } 

} 

Использование

$property = Property::find($id); 
$price = $property->property_price->per_night_price; // null 

трески e работает нормально в Laravel 4.

+0

Вы модель имена? –

ответ

0

Вам нужно указать пространство имен в методах отношения.

Если вы используете php5.5 + затем использовать ::class константы, в противном случае строка символов:

// App\Models\PropertyClass 
public function property() 
{ 
    return $this->belongsTo(Property::class); 
    // return $this->belongsTo('App\Models\Property'); 
} 

// App\Models\Property model 
public function propertyPrice() 
{ 
    return $this->hasOne(PropertyPrice::class,'pid'); 
    // return $this->hasOne('App\Models\PropertyPrice','pid'); 
} 

Конечно вам нужно пространство имен модели соответственно:

// PSR-4 autoloading 
app/Models/Property.php -> namespace App\Models; class Property