Выпуск Laravel Отношения - PullRequest
0 голосов
/ 21 мая 2018

У меня есть две таблицы users и notes, и я пытаюсь соотнести их с определенным образом, но когда я создаю свои hasMany и belongTo, скрипт не загружается и время ожидания истекает после определенногоколичество времени.

Я пытаюсь создать базовую систему добавления заметок, чтобы вы могли добавлять заметки в учетную запись пользователя.Я успешно установил отношение hasMany к пользователям, у которых есть заметки в своей учетной записи, однако я пытаюсь определить отношение на notes, когда оно приводит пользователя, создавшего заметку.

Моя база данных выглядит так:

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

`id`, `username`, `password`

1   , Connor    , hash

Примечания:

`id`, `note`, `user_id`, `user_id_created`

1   , Hello ,  1       , 1

Так вотозначает, что user ID 1 создал заметку против себя, поэтому в моей модели User я использую:

class User { 
    public function notes(){
        return $this->hasMany("App\Note");
    }
    public function created_notes(){
        return $this->hasMany("App\Note", "id", "user_id_created");
    }
}

А затем в своей модели Notes я использую:

class Note {
    protected $with = ['created_by']
    public function created_by(){
        return $this->belongsTo("App\User", "user_id_created", "id");
    }
}

Однако, когдаЯ сделал это и попробую использовать $with = ['created_by'] на модели моей ноты, скрипт вылетает и не загружается вообще.

Может кто-нибудь пролить свет на это?

Ответы [ 3 ]

0 голосов
/ 21 мая 2018

Модель пользователей должна быть

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

И модель Notes

class Note {
    public function user(){
        return $this->belongsTo(User::class);
    }
}

Теперь просто вызовите user () из экземпляра notes, чтобы получить сведения о пользователе, который создалобратите внимание.

0 голосов
/ 21 мая 2018

Это то, что вы ищете?

Модель пользователя:

class User extends Authenticatable
{
    public function notes(){
        return $this->hasMany("App\Note");
    }
    public function created_notes(){
        return $this->hasMany("App\Note", "id", "user_id_created");
    }
}

Примечание Модель:

use Illuminate\Database\Eloquent\Model;

class Note extends Model {
    protected $with = ['created_by'];

    public function created_by()
    {
        return $this->belongsTo("App\User", "user_id_created", "id");
    }
}

Тинкер Результаты:

>>> $note = App\Note::find(1)
=> App\Note {#771
     id: 1,
     note: "1",
     user_id: 1,
     user_id_created: 1,
     created_at: "2018-05-21 08:58:32",
     updated_at: "2018-05-21 08:58:32",
     created_by: App\User {#778
       id: 1,
       name: "bob",
       email: "bob@example.com",
       created_at: "2018-05-21 08:58:22",
       updated_at: "2018-05-21 08:58:22",
     },
   }
0 голосов
/ 21 мая 2018

Примечание Модель

class Note extends Model
{

    protected $table='notes';
    public $primaryKey='id';
    protected $fillable = ['id','note','user_id','user_id_created'];

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

}

Модель пользователя

class User extends Authenticatable
{
    use Notifiable;

    protected $table='users';
    public $primaryKey='id';

    protected $fillable = ['username'];
    protected $hidden = ['password'];


    public function posts(){
        return $this->hasMany('App\Post');
   }
}

в вашем контроллере

use App\Note;
use Illuminate\Http\Request;

class NotesController extends Controller
{

    public function get_notes(Request $request){
      $notes=Note::with('user')->orderBy('created_at','desc')->get();
      return response()->json($notes);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...