Я только что загрузил и начал новый проект с последним Laravel 4.2.
Моя проблема заключается в модели User
если я определяю какое-либо отношение, которое оно не работает.
Модель пользователя
use Illuminate\Auth\UserTrait; use Illuminate\Auth\UserInterface; use Illuminate\Auth\Reminders\RemindableTrait; use Illuminate\Auth\Reminders\RemindableInterface; class User extends Eloquent implements UserInterface, RemindableInterface { use UserTrait, RemindableTrait; /** * The database table used by the model. * * @var string */ protected $table = 'users'; /** * The attributes excluded from the model's JSON form. * * @var array */ protected $hidden = array('password', 'remember_token'); public function metadata() { return $this->hasOne('Metadata'); } public function test() { return "hello test"; } }
Модель метаданных
class Metadata extends Eloquent { public $timestamps = false; protected $primaryKey = 'user_id'; protected $table = "users_metadata"; protected $fillable = array('user_id', 'first_name', 'last_name'); public function user() { return $this->belongsTo('User'); } }
Поэтому, если я это сделаю
$user = User::find(1); dd($user->metadata);
Я возвращаюсь Null
, и выше я сделал тестовый метод в моей модели User
Если я это сделаю:
$user = User::find(1); dd($user->test());
я получил
Call to undefined method Illuminate\Database\Query\Builder::test()
Зачем? Там ясно. Я поместил свой код в более раннюю версию, и он работал нормально.
И что меня действительно смущает, так это если я это сделаю:
$metadata = Metadata::find(1); dd($metadata->user);
Он отлично работает с методом belongsTo
, я тестировал модель User
с другим отношением – теми же результатами.