我试图使用Laravel构建一个(稍微复杂的)订阅服务。
订阅类型为:20份早餐的早餐订阅,在注册后30天内使用。
例如,如果用户在4月1日注册早餐订阅,他可以选择任何20天,直到4月30日。
我制作了以下表格和相应的模型:
用户模型和表
Users:
- id
- name
- email
etc
订阅表和型号
Subscriptions:
- id
- name
- price
- validity
- meals_available
订阅用户透视(?)带有软删除的表
- subscription_id
- user_id
- start_date
- end_date
- created_at
- updated_at
- deleted_at
我已经用belongsToMany关系更新了相应的模型
用户:
class User extends Authenticatable
{
...
/*
* User can have many subscriptions
*/
public function subscriptions()
{
return $this->belongsToMany('App\Subscription')->withTimestamps();
}
}
订阅模式
class Subscription extends Model
{
...
/*
* Subscription can have many Users
*/
public function users()
{
return $this->belongsToMany('App\User')->withTimestamps();
}
}
我需要帮助解决的问题1。数据库/模型结构是解决问题的正确方法吗?
虽然我可以使用附加()和分离()方法,但我不能在subscription_table中填写start_date和end_date值。如何做到这一点?
我想在透视表上使用软删除。我如何使用它?
提前谢谢。
>
还不确定。
附加具有附加列的方法。将模型设置为:
public function subscriptions()
{
return $this->belongsToMany('App\Subscription')
->withTimestamps()
->whereNull('subscription_user.deleted_at')
->withPivot('start_date','end_date');
}
您可以根据需要更新行
$user->subscriptions()->attach([1 => ['start_date' => '2016-04-01', 'end_date' => '2016-04-30'], 2, 3]);
或者,您可能希望添加这样的方法来检索给定用户的已删除行。
public function subscriptionsWithTrashed()
{
return $this->belongsToMany('App\Subscription')->withTimestamps()->withPivot('start_date','end_date');
}
public function subscriptionsOnlyTrashed()
{
return $this->belongsToMany('App\Subscription')->whereNotNull('subscription_user.deleted_at')->withTimestamps()->withPivot('start_date','end_date');
}
要从数据透视表中设置值,可以使用:
$user->subscriptions()->updateExistingPivot($subscriptionId, ['start_date' => '2016-01-01', 'end_date' => '2016-01-01']);
或者
$user->subscriptions()->attach([1 => ['start_date' => '2016-01-01', 'end_date' => '2016-01-01'], 2, 3]);
要使用softDelete,您可以使用这些方法中的任何一种来更新deteled_at并检索以这种方式约束关系的数据
$this->belongsToMany('App\Subscription')->wherePivot('deleted_at','null');
问题内容: 我想在Java中实现具有多个值的哈希表,即 并且将返回2倍的值。 我怎样才能做到这一点? 问题答案: 您可以改用Multimap。它在列表中为一个键保留多个值。在commons- collection 和Guava中有实现。 这类似于使用值是列表的Hashmap,但是不必显式创建列表。 自己动手做的同一示例如下所示: 请注意,您可以将Multimap用作构建器,并对其调用asMap以返
我想在laravel中创建一个RBAC系统,其中一个用户可以属于多个角色,每个角色可以有多个权限。中间件应在继续请求之前检查用户是否具有特定权限(在其任何角色内)。 我能够实施一个案例,其中 用户属于一个具有多个权限的角色 我需要实现具有多个权限的多个角色的用户。有什么指点吗?
我是新来laravel的,所以原谅我可能的愚蠢问题。此外,我确实研究了所有其他“类似”的问题,但要么它们没有重现正确的解决方案,要么我真的很难理解。 情景: 我有一个帖子模型和一个主题模型。这就是他们现在的样子。 在岗位上。php 在主题上。php 现在,我需要实现的是: 如果将查询参数传递给请求(即q=Food),我只想返回在主题关系中包含主题食物的帖子,而不返回其他帖子。如果什么都没有通过,那
我继承了一个项目,它有一些CRUD形式...在创建表单中,我们需要创建一个和关系的条目。所以基本上我得到的是以下这些 我不确定这是否是最好的方法,但似乎有效。 我遇到的问题是,在表单中,这些参与者/评论可以编辑、添加或删除,我不确定如何更新它们。是否可以更新它们,或者删除现有关系数据并重新添加它们是否更好? 我从来没有更新过关系,只是添加了它们,所以我不确定如何开始。 任何帮助都将不胜感激。
下面我有一些代码。这段代码是一个基本的push/pop堆栈类,我将其创建为一个模板,以使某人能够推送/pop堆栈。我有一个家庭作业,我现在要做的是创建一个具有多个值的堆栈。 所以我希望能够创建一个堆栈,它基本上可以发送三个整数,我也可以推/弹出这些整数。我在寻找的是关于这应该如何工作的理论,我不想让别人帮我做作业。 情况是,我们正在处理部件。因此,用户将输入序列号(int)、制造日期(int)和l
我有3个表:User、Role和具有Role\u id和User\u id的透视表RoleUser。 对于关系在我的模型我这样做: 榜样: 用户模型: 我为filter by one角色做了这项工作,效果很好: 但是现在我需要通过许多角色来过滤我的用户。 我将从我的前端发送一个数组,其中包含角色的id。 事实上,我可以得到如下角色 但我不知道如何才能获得具有此角色的用户。