Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Не пойму в чем Проблема, или в Laravel 5.7 или на хостинге в BD.
Таблицы:
USERS, MEMBERS, COOPS, MEMBER_USER, COOP_USER
Связи таблиц:
Данные в таблицах:
Роут:
Route::group(['prefix'=>'admin', 'middleware'=>['web', 'auth']], function() {
Route::get('/', ['uses' => 'Admin\AdminController@show', 'as'=>'index']);
});
Когда такой код:
<?php
namespace App\Http\Controllers\Admin;
use App\User;
use App\Role;
use App\Apartament;
use App\Meeting;
use App\Coop;
use App\Member;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Http\Response;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\View;
use Illuminate\Validation\ValidationException;
use BD;
use Auth;
//use Gate;
use Illuminate\Support\Facades\Gate;
class AdminController extends Controller
{
//
public function __construct() {
//$this->middleware('auth');
}
public function show(Request $request) {
$user = Auth::user();
if(!Auth::check()) {
return redirect('/login');
}
$user = User::find(Auth::id());
$member = $user->members;
$members = Member::find(Auth::id());
dd($member);
return view('admin.index');
}
}
то получаю коллекцию:
когда запускаю идентичный по логике код, а именно:
<?php
namespace App\Http\Controllers\Admin;
use App\User;
use App\Role;
use App\Apartament;
use App\Meeting;
use App\Coop;
use App\Member;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Http\Response;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\View;
use Illuminate\Validation\ValidationException;
use BD;
use Auth;
//use Gate;
use Illuminate\Support\Facades\Gate;
class AdminController extends Controller
{
//
public function __construct() {
//$this->middleware('auth');
}
public function show(Request $request) {
$user = Auth::user();
if(!Auth::check()) {
return redirect('/login');
}
$user = User::find(Auth::id());
$coop = $user->coops;
$coops = Coop::find(Auth::id());
dd($coop);
return view('admin.index');
}
}
то в ответе:
Куда копать?
Есть такая таблица
Модели
Coop;
User;
Связь многие ко многим.
Далее нижеследующий код:
$user = User::find(Auth::id());
$coops = Coop::find(3);
foreach ($coops as $coop)
echo ($coops->name);
dd($coops->name);
И в результате:
В базе в таблице одна запись, а после запроса в ответе четыре?
Подскажите куда копать? ибо при продолжении выполнения следующего кода
$user = User::find(Auth::id());
$coops = Coop::find(3);
foreach ($coops as $coop)
if($coops->name == 'admin')
{
return TRUE;
}
return FALSE;
if (Gate::denies('add-meeting', $coops)){
echo 'Разрешено';
}else{
echo 'Не разрешено';
}
exit;
The Response content must be a string or object implementing __toString(), "boolean" given.
Спасибо за участие. Очень полезная ссылка. На будущее.
Вопрос решил так
$member = $user->members;
foreach ($member as $object){
$object->id;
$member=Member::find($object->id);
$meetings = $member->meetings;
foreach($meetings as $meeting);
}
Пытаюсь получить связь Один ко Многим в такой логике.
Таблицы:
users
members
meetings
Сначала связь многие ко многим
$member = $user->members->pluck('id')->toArray();
Получаю массив
array:1 [▼
0 => 3
]
Дальше связь один ко многим
$member=Member::find($member);
$meetings = $member->meetings;
foreach($meetings as $meeting);
Дальше тупик.
Property [meetings] does not exist on this collection instance