php - 如何在 Laravel 中加入表格?
问题描述
我是 Laravel 的新手,我有一个关于 Eloquent 的问题:
这是我的数据库表结构:
users
- id
- user_id
- username
- name
- email
- password
- email_verified_at
- remember_tok
- created_at
- updated_at
challenges
- id
- challenge_id
- category_id
- hashtag
- title
- description
- duration
- link
- created_at
- updated_at
- user_id
user_challenges
- user_id
- challenge_id
- duration
- created_at
- updated_at
我想要实现的是显示用户的挑战,例如,如果用户在用户仪表板中加入挑战,我想显示他加入的挑战,以及用户创建的挑战(如果他创建任何);
模型\用户.php
class User extends Authenticatable
{
use Notifiable;
public function challenges() {
return $this->hasMany(Challenge::class, 'user_id');
}
public function userChallenges() {
return $this->hasMany(UserChallenge::class, 'user_id');
}
}
模型\挑战.php
class Challenge extends Model
{
public function user () {
return $this->belongsTo(User::class, 'user_id');
}
}
模型\用户挑战.php
class UserChallenge extends Model
{
public function user () {
return $this->belongsTo(User::class, 'user_id');
}
}
这就是我的家庭控制器中的内容: App\Http\Controllers\HomeController.php
class HomeController extends Controller
{
public function index()
{
$user_id = auth()->id();
$user = User::find($user_id);
return view('home')
->with('challenges', $user->challenges)
->with('userChallenges', $user->userChallenges);
}
}
这是我目前在“我的仪表板”中为“加入的挑战”获得的 - 但是在返回视图时如何加入表格,以便我还可以获得挑战主题标签标题?就像我在“我的挑战”部分下得到的一样? 仪表板
更新:我应该在我的数据库中添加什么,以便计算参加挑战的用户数量?
解决方案
为了获得用户创造的挑战,我相信您已经正确地做到了。
并让用户加入挑战。你几乎可以用你的数据透视表做对了。您可以在 laravel 文档中查看多对多关系。
这些是检索用户创建的挑战和用户加入的挑战的示例代码。这些代码应该驻留在您的用户模型中,您应该保留该模型。
public function created_challenges()
{
return $this->hasMany(Challenge::class,'user_id','id');
}
public function joined_challenges()
{
return $this->belongsToMany(Challenges::class, 'user_challenges', 'user_id', 'challenges_id');
}
一旦关系正常工作,您就可以简单地使用从关系返回的集合。将其传递$user->joined_challenges
给视图后,您可以执行以下操作
@foreach ($joined_challenges as $challenge)
<p>{{$challenge->hashtag}}</p>
<p>{{$challenge->title}}</p>
@endforeach
让我知道这是有效的,干杯!;)
推荐阅读
- android - TextView 仅显示有限的文本和单行
- python-3.x - Python列表唯一
- excel - VBA Excel - 阻止用户使用鼠标,但允许用户停止或暂停脚本
- ios - 从另一个视图控制器调用函数以更新特定单元格
- db2 - DB2 UPGRADE DB “SQL0954C 应用程序堆中没有足够的存储空间来处理语句。SQLSTATE=57011”
- c# - 如何使用 asp.net core 2 中间件包装 graphql.net 端点响应?
- android - 编译 tensorflow lite 最小示例
- javascript - 如何在 React 中使用带有钩子的生命周期方法?
- git - 始终创建新的 Git 分支,即使是微小的/微不足道的更改
- python - 如何在 pandas 数据框中使用单引号将一列拆分为两列?