
Vlad
04.07.2017
10:17:49

F01134H
04.07.2017
10:17:52
у тебя метод просто не запустится, если мидлвейр заблочит неавторизованного юзера

Андрэ
04.07.2017
10:17:56
после company скобки поставь, да

Vlad
04.07.2017
10:18:36

Google

F01134H
04.07.2017
10:18:50
а че тут пояснять

Андрэ
04.07.2017
10:18:53
Без скобок тебе возвращается коллекция, результат запроса

Vlad
04.07.2017
10:18:57

F01134H
04.07.2017
10:19:18
типо того

Андрэ
04.07.2017
10:19:20
А со скобками - возврщается QueryBuilder, и дальше с этим запросом можно работать - удалять, создавать и т/д/ записи

F01134H
04.07.2017
10:19:38
только мидлвейры желательно в роутере прописывать, что бы у тебя централизованно все это хранилось

Андрэ
04.07.2017
10:20:20
Чо мы тут о разном говорим, ну да ладно

Vlad
04.07.2017
10:20:25

Андрэ
04.07.2017
10:20:28

F01134H
04.07.2017
10:20:38
ну он спросил почему там скобки

Vlad
04.07.2017
10:20:38
Route::prefix('users')->group(function() {
Route::get('/', 'UserController@index')->name('home');
Route::get('/company/delete', 'UserController@deleteCompany');
Route::get('/confirmation/{token}','Auth\RegisterController@confirmation')->name('confirmation');

F01134H
04.07.2017
10:20:39
я ответил

Google

Андрэ
04.07.2017
10:20:52
$user->company и $user->company() разные штуки возвращает

F01134H
04.07.2017
10:21:11
ну вот тем-более

Vlad
04.07.2017
10:21:12

Андрэ
04.07.2017
10:21:16
Ну ты не на тот вопрос ответил по сути

F01134H
04.07.2017
10:21:25
внутри то это через магические методы работает

Андрэ
04.07.2017
10:21:40
Нет же. ты ответил на вопрос "как это сделано, что можно скобки а можно нет"
а вопрос был о том, почему без скобок удаление не получалось

F01134H
04.07.2017
10:22:01
разные магические методы потому что вызываются ?

Vlad
04.07.2017
10:22:05
user()->company()->delete();
Call to undefined function App\Http\Controllers\company()

F01134H
04.07.2017
10:22:18
?

Андрэ
04.07.2017
10:22:33
Тут дело именно в том, что возвращает метод
ну комон

F01134H
04.07.2017
10:22:53

Андрэ
04.07.2017
10:23:20

F01134H
04.07.2017
10:23:35
где?
когда он вместо company вызывает company()
разные действия происходят
следовательно магические методы выполняют разные функции

Google

Vlad
04.07.2017
10:24:12

Андрэ
04.07.2017
10:24:18
Так то да, но к контексте вопроса - важно, что возвращается, а не то, какой магический метод используется

F01134H
04.07.2017
10:24:41
важно в общем то все)

Андрэ
04.07.2017
10:25:30
Слишком общий ответ. Так можно на простой вопрос и лекцию на пару часов прочитать. Но зачем.

F01134H
04.07.2017
10:26:42
мм
он спросил, почему там скобки нужны, я ответил, потому что магические методы разные вызываются

Vlad
04.07.2017
10:27:14
$user = Auth::user();
$user->company()->delete();

F01134H
04.07.2017
10:27:23
очевидно, что они разные результаты возвращают, раз одно работает, а другое нет

Андрэ
04.07.2017
10:27:50
Я не буду с тобой спорить

F01134H
04.07.2017
10:28:01
сам начал
)

Андрэ
04.07.2017
10:28:14
Для меня очевидно, что ему надо было понять, почему без скобок не работает delete

Vlad
04.07.2017
10:28:15
Как $user тогда на все function распространить
$user = Auth::user();
$user->company()->delete();
А то так везде лупить пока только

Андрэ
04.07.2017
10:28:33
И ответ не в том, что другой маг. метод, а в том, что возврщается другое значение

F01134H
04.07.2017
10:29:03

Андрэ
04.07.2017
10:30:00

F01134H
04.07.2017
10:30:17
это один объект

Google

Vlad
04.07.2017
10:30:30

F01134H
04.07.2017
10:30:38
смотри

Андрэ
04.07.2017
10:30:58
смотрю

F01134H
04.07.2017
10:31:07
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect('/home');
}
$request->user = Auth::user();
return $next($request);
}
}
$request->user = Auth::user(); вот такую строчку добавь и усе
это тот самый мидлвейр

Андрэ
04.07.2017
10:32:00
а, ну вариант. Хотя я бы middleware для этого не пользовал наверн
И это будет работать? Надо посмотреть

F01134H
04.07.2017
10:33:25
Vlad а потом делаешь такое в контроллере своем
function deleteUserCompanies(Request $request) {
$request->user->company()->delete();
}

Admin
ERROR: S client not available

Vlad
04.07.2017
10:34:08

F01134H
04.07.2017
10:34:13
но потом вроде передалал на композицию как то

Андрэ
04.07.2017
10:34:14
Ясн. Ну мне как-то это не очень нравится, в middleware определять юзера да еще и в request его пихать

Vlad
04.07.2017
10:34:33
ясно, я сейчас в ступоре что у меня это мидла вообще нет

F01134H
04.07.2017
10:34:53
удалил наверное?

i
04.07.2017
10:35:23
А зачем делать $request->user = Auth::user(); почему просто сразу не использовать Auth::user()?

F01134H
04.07.2017
10:35:33
об этом я как то не задумывался

Google

Vlad
04.07.2017
10:35:43

F01134H
04.07.2017
10:35:48
а и вправду, почему?

Vlad
04.07.2017
10:35:50
Я с этого начинал))
Только вы меня отговорили

F01134H
04.07.2017
10:36:03
а проблема в чем тогда
я тебя отговорил проверку is_null убрать в мидлвейр и все

i
04.07.2017
10:36:35
Если есть middleware которая проверяет авторизацию, то Auth::user() всегда валидного пользователя будет возвращать

Vlad
04.07.2017
10:36:36
проще говоря и проверка не нужна?
public function handle($request, Closure $next, $guard = null)
{
switch ($guard) {
case 'admin':
if (Auth::guard($guard)->check()) {
return redirect()->route('admin.dashboard');
}
break;
default:
if (Auth::guard($guard)->check()) {
return redirect('/users');
}
break;
}

F01134H
04.07.2017
10:37:07

Vlad
04.07.2017
10:37:17
нет, влопатить не могу где auth мидл

i
04.07.2017
10:37:26
Route::group(['middleware' => ['auth']], function () {

F01134H
04.07.2017
10:37:37
ну запили свой мидлвейр значит

Андрэ
04.07.2017
10:37:37

i
04.07.2017
10:37:38
Можно вот так

F01134H
04.07.2017
10:37:56
и все что там нужно, это определить внутри handle
if (Auth::guard($guard)->check()) {
return redirect('/home');
}

Андрэ
04.07.2017
10:38:28

Vlad
04.07.2017
10:39:29
посмотри файл app\Http\Kernel.php
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
Родной получается, я выше предполагал, а вы все на свой перенезначаете как понимаю?
ну запили свой мидлвейр значит
в итоге получается
public function deleteCompanyForUser(){
Auth::user()->company()->delete();
Плюс приявязать мидл к группе users в routes/web?

Андрэ
04.07.2017
10:54:00
Зачем вообще свой middleware аутентификации пилить, если он есть?

i
04.07.2017
10:54:28

Vlad
04.07.2017
10:55:06