я хочу вернуть проекты указанного пользователя c? - PullRequest
0 голосов
/ 06 марта 2020

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

Это моя модель Project:

public function users(){
    return $this->hasMany(User::class);
}

Это моя модель User:

public function projects(){
    return $this->hasMany(Projet::class,'user_id');
}

и это функция контроллера:

public function projetuser(){
   $user = User::find(auth()->user()->id);
   return $user->projects;
}

и это моя миграция user_projet:

public function up()
{
    Schema::create('user_projet', function (Blueprint $table) {
        $table->bigIncrements('id');

        $table->unsignedBigInteger('projet_id');
        $table->foreign('projet_id')->references('id')->on('projets')->onDelete('cascade');

        $table->unsignedBigInteger('user_id');
        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

        $table->string('membre')->nullbale();
        $table->timestamps();
    });
}

1 Ответ

1 голос
/ 06 марта 2020

Вы неправильно определяете отношение многие ко многим . Используйте belongsToMany() вместо hasMany(). Поскольку имя вашей сводной таблицы не является стандартным (оно должно быть в алфавитном порядке c порядок projet_user), вам необходимо включить его и в определение отношений.

<?php

use Illuminate\Database\Eloquent\Model;

class Projet extends Model
{
    public function users()
    {
        return $this->belongsToMany(User::class, 'user_projet');
    }
}

class User extends Model
{
    public function projets(){
        return $this->belongsToMany(Projet::class, 'user_projet');
    }
}

Теперь в вашем контроллере вы можете сделать это :

public function projetuser(){
    return auth()->user->projets;
}

Ваш вопрос, кажется, различается между "projet" и "project". Я предположил, что «projet» было правильным написанием, но постарайтесь, чтобы это было непротиворечивым.

Обратите внимание также на опечатку в вашей миграции: nullbale.

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