我目前的项目是学校管理系统。现在,我需要执行以下操作:
- 查询数据库以获取与当前用户关联的所有报告卡;
- 在视图中显示它们;
主要的主要问题是第一部分,因为我是雄辩的初学者。我相信我可以使用刀片来构造表来显示报告卡中的信息 - 前提是我可以在使用控制器传递该信息。
我已经根据Eloquent的文档使用hasMany和belogsTo建立了users
和cards
之间的关联。在我的卡控制器中,我有以下内容:
class CardController extends Controller
{
public function index()
{
$card = AppUser::find(1)->cards;
// After querying, return the view, etc
}
}
该功能缺少功能,但我不知道具体是什么。我尝试过其他一些事情,例如:
$cards = DB::table('cards')->get();
return view('viewname');
我知道,我在这里缺少一些基本的东西,但我不能把手指放在上面。老实说,即使在阅读了大部分文档之后,我仍然不习惯在Laravel中查询数据库。
任何帮助将不胜感激。
既然你说你已经建立了两个模型之间的关系,那么一半的工作已经完成, 首先,我可以看到您没有检索当前经过身份验证的用户,我相信您希望在视图中检索其报告卡,为此,您只需将其放入索引方法中即可:
$user = auth()->user();
但现在我鼓励你去修补,php artisan tinker
终端并尝试这个:
$user = AppUser::first(); // or change this to AppUser::find($someId);
$cards = $user->cards;
并检查输出,问题是,这$user->cards
单词卡应该与您在用户模型上定义的方法名称相同,因此在您的User.php
中应该是这样的
public function cards() {
return $this->hasMany(Card::class);
}
所以现在你应该有这个用户的可用卡片的集合, 您的index
方法应如下所示:
public function index() {
$user = auth()->user();
$cards = $user->cards;
// Or you can inline it and make it all in one line like this,
// $cards = auth()->user()->cards;
return view('someView', compact('cards'));
}
在你的someView.blade.php
中,只需循环它们,如下所示:
@foreach ($cards as $card)
{{ $card->someProperty }}
@endforeach
希望这有所帮助,如果您需要其他东西,请告诉我。