2016-06-10 4 views
1

Привет, я пытаюсь создать генератор кода, чтобы пригласить пользователя из ввода электронной почты, я хочу сохранить в базе данных идентификатор пользователя, который отправляет приглашение, код и письмо, которое собирается получить приглашение, но Я не могу получить идентификатор моего пользователя auth, выполняющего $ request-> user ('id') (не работает), также я знаю, что есть другой способ сделать это проще, чем использовать DB :: table что-то вроде $ request-> пользователь() -> инвайты() -> создать ... мой контроллер выглядитКак проверить и создать на laravel 5.2 на контроллере?

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use DB; 
use App\Http\Requests; 
use App\Http\Controllers\Controller; 


class invitacionController extends Controller 
{ 


    public function __construct() 
    { 
     $this->middleware('auth'); 

    } 


    public function index(Request $request) 
    { 
     return view('administrar'); 
    } 



    public function invitacion(Request $request) 
    { 
     $this->validate($request, [ 
      'email' => 'required|email|max:255|unique:invites', 
     ]); 

     /*$request->user()->invites()->create([ 
      'code' => str_random(40), 
     ]);*/ 
     DB::table('invites')->insert([ 
     ['usuId' => $request->user('id'), 'code' => str_random(40), 'email' => $request->input('email')], 
     ]); 

     return redirect('/administrar'); 
    } 
} 

ответ

1

Если отношения настроены правильно, то первый (с комментариями) метод должен работать.

Что касается второго способа, я думаю, что вы добавляете дополнительные скобки:

DB::table('invites')->insert([ 
    'usuId' => $request->user()->id, // <--- 
    'code' => str_random(40), 
    'email' => $request->input('email') 
]); 

Это hasMany метод может принимать дополнительные параметры. По умолчанию он ожидает, что столбец будет называться user_id, но вы его назвали usuId. documentation дает этот пример:

return $this->hasMany('App\Comment', 'foreign_key');

Так что я думаю, что вы должны сделать

public function invites() 
{ 
    return $this->hasMany(Invite::class, 'usuId'); 
} 
+0

с помощью $ request-> пользователя() -> идентификатор работает нормально, но правильный метод это прокомментировал один я думаю , с отношениями вы подразумеваете внешние ключи или просто красноречие? потому что там у меня есть это так public function user() { return $ this-> принадлежит Too (User :: class); } User.php общественная функция инвайты() { возвращение $ this-> hasMany (Пригласить :: класс); } – Sociopath

+0

@Sociopath answer updated – alepeino

+0

спасибо, что работает как шарм, еще один вопрос добавляет все, кроме электронной почты, чтобы получить его, я должен написать это: $ request-> user() -> invites() -> create ([ \t \t \t 'код' => str_random (40), \t \t \t 'электронная почта' => $ request-> вход ('электронная почта'), ]); это нормально? – Sociopath