Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 26.12.2014 18:19:35

Armix2000

создания обратного отношения в модели Phone используйте метод belongs

Растолкуйте чтоза обратная связь?
как я понял это чтобы получить какие-то данные из таблицы users через модель Phone.php

я сделал так в моделе User.php написал

    public function user()
    {
        print "!!";
        return $this->belongsTo('User','id','id');
    }

в роуте


Route::get('onetoone82', function()
{
    $phone = Phone::find(82)->phone;
    var_dump($phone);
    $name = Phone::find(82)->name;
    var_dump($name);
});


в итоге выводит

string(8) "97896655" NULL

т.е телефон опять видит как при hasOne а данные NAME пустые???!!!


может я не так понял смысл обратной связи?!

#2 26.12.2014 18:21:02

Armix2000

Re: создания обратного отношения в модели Phone используйте метод belongs

Armix2000 пишет:

Растолкуйте чтоза обратная связь?
как я понял это чтобы получить какие-то данные из таблицы users через модель Phone.php

я сделал так в моделе User.php написал

    public function user()
    {
        print "!!";
        return $this->belongsTo('User','id','id');
    }

в роуте


Route::get('onetoone82', function()
{
    $phone = Phone::find(82)->phone;
    var_dump($phone);
    $name = Phone::find(82)->name;
    var_dump($name);
});


в итоге выводит

string(8) "97896655" NULL

т.е телефон опять видит как при hasOne а данные NAME пустые???!!!


может я не так понял смысл обратной связи?!


ОПЕЧАТКА - я сделал так в моделе Phone.php написал!!!!!!!!

#3 26.12.2014 18:59:19

Wide

Re: создания обратного отношения в модели Phone используйте метод belongs

Каждый пользователь имеет один номер

class User {
 
    function phone()
    {
        $this->hasOne('Phone');
    }
    
}

Каждый номер принадлежит одному пользователю

class Phone {
 
    function user()
    {
        $this->belongsTo('User');
    }
    
}

База

users
+ id
+ name

   

phones
+ id
+ user_id
+ number

Пользователь

$user = User::find(1)

   
Имя пользователя c id = 1

$user->name

   
Номер телефона этого пользователя

$user->phone->number

И обратно

$phone = Phone::where('number', '=', '8 800 123 4567')->first()

Имя пользователя, которому принадлежит номер

$phone->user->name

#4 26.12.2014 23:32:35

Armix2000

Re: создания обратного отношения в модели Phone используйте метод belongs

Wide пишет:

Каждый пользователь имеет один номер

class User {
 
    function phone()
    {
        $this->hasOne('Phone');
    }
    
}

Каждый номер принадлежит одному пользователю

class Phone {
 
    function user()
    {
        $this->belongsTo('User');
    }
    
}

База

users
+ id
+ name

   

phones
+ id
+ user_id
+ number

Пользователь

$user = User::find(1)

   
Имя пользователя c id = 1

$user->name

   
Номер телефона этого пользователя

$user->phone->number

И обратно

$phone = Phone::where('number', '=', '8 800 123 4567')->first()

Имя пользователя, которому принадлежит номер

$phone->user->name

А где я ошибся? Я писал код из документации но почему-то внутрь этой функции не заходит код, я не вижу !! Знаков

    public function user()
    {
        print "!!";
        return $this->belongsTo('User','id','id');
    }

#5 27.12.2014 11:41:12

Armix2000

Re: создания обратного отношения в модели Phone используйте метод belongs

Все разобрался спасибо!
вместо $user = Phone::find(82)->user; написал $user = Phone::find(82)->phone;

#6 27.12.2014 11:42:37

Armix2000

Re: создания обратного отношения в модели Phone используйте метод belongs

Если не трудно подскажите при связи OneToOne должно быть 2 отдельных запроса Select?
У меня дебагер показывает 2!

Подвал раздела