I have a select and I want to output data from the DB
<select class="select-css" name="title" required="">
<option selected="" value="" disabled="">Выберите сервер</option>
@foreach($guilds as $guild)
<option value="{{$guild->id}}">{{$guild->name}}</option>
@endforeach
</select>
In CreateController I wrote this
$guilds = User::with('guilds')->get('id') === Auth::user()->id;
I have a UserGuild database
class UserGuild extends Model
{
public function user(){
return $this->hasMany(User::class);
}
public function guild(){
return $this->belongsToMany(Guild::class);
}
Schema::create('user_guilds', function (Blueprint $table) {
$table->engine = 'InnoDB';
$table->id();
$table->unsignedBigInteger('user_id')->nullable();
$table->unsignedBigInteger('guild_id')->nullable();
$table->index('user_id','user_guild_user_idx');
$table->index('guild_id','user_guild_guild_idx');
$table->foreign('user_id','user_guild_user_fk')->on('users')->references('id');
$table->foreign('guild_id','user_guild_guild_fk')->on('guilds')->references('id');
And I have such a mistake
ErrorException
foreach() argument must be of type array|object, bool given (View: C:OpenServerdomainslocalhostsite-rtsresourcesviewsmainservercreate.blade.php)
I need to output to select what is in the User Guide
database, but at the same time where {{$guild->name}}
and value
were were values from the Guild
database
I also tried using foreach, but it doesn’t suit me for further work.
@foreach($users as $user)
@foreach($user->guilds as $guild)
@if(Auth::user()->id === $user->id)
<option value="{{$guild->id}}">{{$guild->name}}</option>
@endif
@endforeach
@endforeach
Advertisement
Answer
Assuming the model and migration is correct, the problem lies in query which in this case returning boolean
instead of collection
, and then foreach in the blade view get passed boolean
as an argument instead of collection
because of this it will throw an error.
So instead using these condition === Auth::user()->id;
, you can use where method to get data from database that correspond with id
you want.
$guild = User::with('guilds')->where('id', Auth::user()->id)->get();