Как составить список всех строк из таблицы (повесток дня) в моей БД, где записи сохраняются подключенным пользователем. Я использую аутентификацию по умолчанию из Laravel.
public function index ($id = null)
{
$agendas = Agenda::where('id', Auth::user()->id)->get();
$users = User::all();
return view('admin.agendas.index', compact('agendas','users','id'));
}
Мой контроллер здесь. Нужна помощь
Используйте отношения.
Agenda::where('id', Auth::user()->id)
получает повестку дня, где идентификатор является идентификатором пользователя, что неверно. Пожалуйста, опубликуйте свои отношения
Здравствуйте, Донкарнаш, Модельная повестка дня и Пользователь не имеют отношения. Позвольте мне попробовать это. Спасибо
Предполагая
user_id
, который ссылается на столбец id
в таблице пользователей
class User extends Model
{
public function agendas()
{
return $this->hasMany(Agenda::class);
}
//... rest of class code
}
class Agenda extends Model
{
public function user()
{
return $this->belongsTo(User::class);
}
//... rest of class code
}
public function index($id = null)
{
$user = User::with('agendas')->findOrFail(auth()->id());
return view('admin.agendas.index', [
'user' => $user,
'agendas' => $user->agendas,
'id' => $id
]);
}
Позвольте мне попробовать это и вернуть вас как можно скорее. Большое спасибо
Привет Донкарнаш, Большое спасибо. Работает
Ваша модель User
должна иметь отношения:
public function agendas()
{
return $this->hasMany(Agenda::class);
}
В вашем контроллере вы можете упростить использование как таковое:
public function index (Request $request, $id = null)
{
$agendas = $request->user()->agendas;
$users = User::all();
return view('admin.agendas.index', compact('agendas','users','id'));
}
если вы хотите получить данные, связанные с другими данными, вам нужно объединить эти таблицы вместе с помощью поля. в этом случае, я думаю, у вас есть столбец в таблице Agenda с именем «user_id».
у вас есть два пути:
если вы хотите использовать объединение ваших таблиц из модели:
// in App\User.php
...
class User ...{
...
public function Agenda(){
return $this->hasMany(Agenda::class);
}
...
}
...
то вы можете получить доступ ко всем «Повестке дня» отовсюду, например:
Auth()->user()->agenda
если вы хотите выполнить поиск в таблице с вашего контроллера, вы можете сделать:
Agenda::where('id', Auth::user()->id)
вы можете прочитать больше о красноречивых отношениях в: https://laravel.com/docs/8.x/eloquent-relationships
Есть ли в таблице повестки дня столбец user_id, связывающий его с записью в таблице пользователей? Какая связь определена между пользователем и моделью повестки дня, например: у пользователя есть много повесток дня и повестка дня принадлежит пользователю?