Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Laravel 5.x » Связь многие ко многим laravel 5.7 проблема разработчика или хоста » 13.06.2019 17:12:58

Gordey
Ответов: 0

Не пойму в чем Проблема, или в Laravel 5.7 или на хостинге в BD.
Таблицы:
USERS, MEMBERS, COOPS, MEMBER_USER, COOP_USER
Связи таблиц:
diz_dom1.jpg
Данные в таблицах:
B8dS78g.png
f9ODVCY.png
Роут:

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');
    }
}

то получаю коллекцию:
member_user.jpg
когда запускаю идентичный по логике код, а именно:

<?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.jpg

Куда копать?

#2 Re: Laravel 5.x » Связи таблиц » 11.06.2019 21:19:46

Есть такая таблица
table.jpg
Модели
Coop;
User;
Связь многие ко многим.
Далее нижеследующий код:

$user = User::find(Auth::id());
$coops = Coop::find(3);
foreach ($coops as $coop)
echo ($coops->name);
dd($coops->name);

И в результате:
echo_dd.jpg
В базе в таблице одна запись, а после запроса в ответе четыре?

Подскажите куда копать? ибо при продолжении выполнения следующего кода

$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.

#3 Re: Laravel 5.x » Связи таблиц » 11.06.2019 20:29:18

Спасибо за участие. Очень полезная ссылка. На будущее.

Вопрос решил так

$member = $user->members;
    foreach ($member as $object){
        $object->id;
        $member=Member::find($object->id);
        $meetings = $member->meetings;
    foreach($meetings as $meeting);
    }

#4 Laravel 5.x » Связи таблиц » 04.06.2019 15:33:35

Gordey
Ответов: 3

Пытаюсь получить связь Один ко Многим в такой логике.
Таблицы:
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

Подвал раздела