Красноречивая сводная таблица с другим именем столбца - PullRequest
8 голосов
/ 10 июня 2019

Таблица пользователей

- id
- name (string)

Таблица посещений

- id
- user_id
- viewer_id 

Я хочу получить список посещений со связанным именем пользователя для данного пользователя (в данном случае id = 1)

$visits = \Visits::where(['user_id' => 1])->with('user')->get();

это моя модель посещений:

class Visits extends Model
{

    protected $table = 'visits';

    public function store(Request $request)
    {
        $visits = new Visits;
        $visits->save();
    }

    public function user()
    {
        return $this->belongsTo('User', 'viewer_id');
    }

}

это моя модель пользователя

use Illuminate\Database\Eloquent\Model;

class User extends Model
{

    public function store(Request $request)
    {
        $user = new User;
        $user->save();
    }

}

возвращает данные, но «пользователь» равен null

Ответы [ 2 ]

4 голосов
/ 13 июня 2019

Я думаю, вам нужно немного изменить свой код. Пожалуйста, попробуйте следующее:

public function user()
{
    return $this->belongsTo('App\User', 'viewer_id', 'id');
}

$ посещения = \ посещения :: где (['user_id' => 1]) -> с ('user') -> get ();

0 голосов
/ 17 июня 2019

Я предполагаю, что в вашем visits table, user_id - это человек, которого посетили, а viewer_id - это люди / пользователи, которые посетили.

Итак, моя модель Visits будетбыло что-то вроде этого

class Visits extends Model
{
    protected $table = 'visits';
    protected $fillable = array('user_id','viewer_id'); //Fillable is for Mass Assignment


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

   public function visitorsDetails(){
     return $this->belongsTo(User::class,'viewer_id','id');
   }   
}

Теперь, чтобы получить подробную информацию о посетителях для пользователя с user_id=1, я хотел бы сделать что-то вроде этого.

$visitorList = Visits::where('user_id',1)->with('visitorsDetails')->get();
echo <pre>;
print_r($visitorList->toArray()); // This will show the visitor with visitors detail in an array form.

Примечание: Я не уверен, почему вы пишете store функцию внутри модального режима, необязательно, вы можете напрямую сохранять данные с самого контроллера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...