我需要在mt项目中广泛使用状态.我需要他们对我的users(active,suspended,等),实体(active,pending_activation,inactive)和我的订阅(active,on_grace_period,not_subscribed,never_subscribed).
到目前为止,我认为最好的方法是将它们存储在数据库中,但我觉得将它们放在其他3个选项中要容易得多.
我还认为我可以将它们存储在我的Eloquent模型中作为常量.例如,我的订阅模型如下所示:
// SubscriptionModel
const SUBSCRIBED_ACTIVE = 1;
const SUBSCRIBED_ON_GRACE_PERIOD = 2;
const NOT_SUBSCRIBED = 3;
const NEVER_SUBSCRIBED = 4;
Run Code Online (Sandbox Code Playgroud)
并检索它们,例如在刀片视图中:
// subscription/index.blade.php
@if($user->subscription->status == /App/SubscriptionModel::SUBSCRIBED_ACTIVE)
<div>You are subscribed. Thank you</div>
@elseif($user->subscription->status == /App/SubscriptionModel::NEVER_SUBSCRIBED)
<div>You need to create a subscription before being granted full access!</div>
@elseif(...)
// and so on
Run Code Online (Sandbox Code Playgroud)
如何做同样但使用配置文件夹并添加一个名为的文件status.php.在视图中访问它将是:
@if($user->subscription->status == Config::get('status.subscription.SUBSCRIBED_ACTIVE'))
<div>You …Run Code Online (Sandbox Code Playgroud) 我有一个users表和一个与businesses表一对一/一的关系(users.user_id => businesses.user_id).在我的users桌子上,我有一个鉴别器,它告诉我用户是否属于商业类型,因此我也需要在businesses表格上有详细信息.
我想用我目前正在工作的工厂创建我的用户,然后只创建业务详细信息,其中鉴别器指向企业帐户.
我脑子里有三个选择:
user_id用户分配给业务工厂. user_id已经创建的用户与业务工厂user_id. users.user_id和business.user_id.但是我使用的是随机生成器,user.user_type即使我businesses填充了表,也可能是那些将鉴别器设置为"个人"的用户.还有另外一种方法吗?我可以将Seeder的论据传递给工厂吗?
我一直在环顾四周,却找不到与我相同的情景.我有:
--public
|--img
|--logo (folder)
|--post_image (folder)
|--banner.jpg
|--icon.ico
|--image1.jpg
|-........etc
Run Code Online (Sandbox Code Playgroud)
我需要忽略logo和post_image文件夹,但我想保留文件img夹内的每个文件.我该怎么办呢?
现在我有,**/public/img但我觉得这不是正确的方法!
如何在多个网站之间共享一个JWT令牌.我认为第一件事就是在所有网站上都有相同的秘密.
如果用户在站点A上登录并且生成了令牌,我想在完全不同的域上对网站B使用相同的令牌.
可以吗?
我想构建一个Hierarchical Role Base访问控制.这是我目前的架构:

目前我有两个选项来构建这个系统:
是否有更好的方法或仅仅取决于我的项目需求?
我只是因为简单而倾向于选择Hierarchical.如果我这样做,有没有更好的方法来选择权限级别,也许使用二进制数字?
选项2会有一些角色级别,我会有一些级别的权限.因此,当我创建Full Administrator角色时,将继承所有其他权限,因为这将是级别4,而其他权限将具有小于级别4(或4000)的数字.
这有点矫枉过正吗?
php mysql permissions hierarchical role-based-access-control
我需要创建以下数据库:

对于半卡车我不需要额外的亚型,而对于Car我只需要那3种亚型而且对于轿车我也需要四种亚型.对于SELECT,我将使用JOIN(规范化数据库),但我需要找到一种简单的方法来进行INSERT.
我需要完全按照图中的方式创建此数据库.
到目前为止,我的第一种方法是使用以下表格:
我的问题是我不确定这是正确的方法,我不知道如何在表之间创建关系.
有任何想法吗?
谢谢!
更新:
下图基于@Mike的答案:

我的帖子有图片(多对多,因为图片也可以有其他关系)。在我的数据透视表中,我有一个名为“featured”的布尔字段,它指定了该帖子的主图像。我想在帖子索引页面中显示与当前用户关联的所有帖子。我只想从数据库中获取一张图片,那应该是特色图片。目前我只能将精选图片作为集合。这样做的原因是,如果用户有很多帖子,我不想继续检索他们所有帖子的特色图片 (N+1),而是使用预先加载仅通过 2 个查询获取特色图片。
\\Post Model
public function images() {
return $this->belongsToMany(Image::class);
}
public function image(){
return $this->images()->where('featured', '=', true)->first();
}
public function featured_image(){
return $this->images()->where('featured', '=', true);
}
\\Controller
$user = Auth::user();
$posts = $user->posts()->with('image')->get();
// throws error
//Call to undefined method Illuminate\Database\Query\Builder::addEagerConstraints()
// if I do this
$posts = $user->posts()->with('featured_image')->get();
// I get all the user's posts, I get the featured image but as a collection even if I only have one record there
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
尝试测试正在执行 ajson_encode并在编码失败时抛出异常的方法。但是,无论我扔给json_encode它什么,它都能成功编码。知道什么是简单的失败吗?
我正在尝试为豪华轿车公司建立数据库,但我对与客户,司机,关联公司和订单相关的地址应该做多少标准化工作感到困惑。
会员和司机的地址基本上是这样的:address_line_1,address_line_2,城市,州,邮政编码,国家/地区
我的问题来自订单和客户地址。它们应如下所示:address_line_1,address_line_2,城市,州,邮政编码,国家/地区,address_type_1(家庭,企业),address_type_2(接送,送达-仅在订单中需要包含)。
因此,在所有四个表之间,除了两个字段在customer和orders表上不同之外,我在地址字段中具有相似之处。
我需要提及的是,每条记录都将使用唯一的ID进行标识。例:
客户编号-10,000-99,999
订单ID-100,000-无限制
驱动程序ID-A1-A999(可能)
会员编号-1,000-9,999
这些只是示例,因此无需花费大量时间来理解它们。
我应该使用多少个地址表来创建一个良好的规范化数据库?
在这一刻,我有三个想法:
一个包含所有字段的地址表,外加一个描述地址类型(客户,订单,会员,驱动程序)的表。不太喜欢这个。
两个地址表。一个与司机和关联公司,另一个与客户和订单。对于第二个表,我将拥有and字段,对于客户而言,该字段始终为NULL。也不喜欢这个。
三个地址表。一种用于驾驶员和会员,一种用于客户,一种用于订单。没有未使用的字段使我认为这可能是比其他两个更好的选择。
有没有人对这三个选择有更好的建议?
非常感谢。
更新:
不用担心表ID的编号系统。那只是一个例子。我仍然没有时间找出最好的编号系统。一旦我解决了地址问题,问题就会解决。
从马特的答案中,我很想让司机和会员表保留所包含的地址,然后以某种方式对客户表和订单表进行排序。
对于客户,我肯定需要一个Addresses表,因为客户可以将多个地址(家庭,公司1,公司2,喜欢的地方等)存储在他们的个人资料中,以便于访问。
我忘记提及订单表,这可能会改变问题的方程式。对于任何订单,我都需要有一个提货和提货地点。但这可以是地址(街道地址)或机场。这意味着与街道地址相关的字段不能与机场特定的字段匹配。因此,我非常确定,在一个表内(全部带有其特定字段)有四个实体(pu_address,pu_airpot,do_address,do_airport)会使我留在未使用的空间中,并且会造成编程混乱。例如:用于接送字段:Address_type,Address_line_1,...,州,国家/地区,机场,航空公司,Flt号,...,以及与接送相同的项目。
因此,我对Order表仍然有疑问,我不确定该如何前进。无论是否使用额外的表格,我都需要同时包括地址和机场上落地点。
更新 再次感谢马特。首先,是的,我将地址存储在单独的字段中。对于订单,问题仍然存在。我将举例说明什么类型的pu并使用豪华轿车服务。地址:伊利诺伊州芝加哥市Main Main 123号,邮编60640; 机场:ORD,AA,123。我需要将所有这些字段以某种方式集成到表格中。
选项:订购表
order_id,...,需要同时具有机场和地址字段的领取字段,具有机场和地址字段的下车字段。
此选项听起来仍然不正确。
接下来将有两个额外的表。一个用于地址(包括用于识别接送的区域)。另一个将用于机场(具有用于pu的字段或也可以用于字段)。
我也不喜欢这个选项,因为我将需要执行两个查询才能只检索订单记录的信息。首先,我将检索订单信息,在知道了接送服务的类型(机场或地址)之后,我将执行另一个查询以检索特定的接送服务。
所以,再次...我在做什么错?我想念什么吗?
是的,我一定会使用一些验证系统来确保地址正确。
我需要对当前的订阅系统进行更改,并且需要添加用户根据他们想要的功能(模块)按订阅收费的选项。这是一个例子:
BasePlan1_2015:10 美元
功能 1:5 美元
功能 2:10 美元
功能 3:5 美元
续费时,拥有 BasePlan1_2015 和 Feature1 & Feature2 的用户应付费
$10 + ($5 + $10) = $25.
到目前为止我有两个选择:
选项 1:侦听创建的发票的 Webhook,并根据所选功能应用发票行。用户第一次选择他们的功能时,我会将它们添加到发票中,然后开具发票。然后我只需在收到所需发票行的每个 Webhook 处添加即可。
选项2:即时创建新计划。我将在数据库中存储每个功能的成本,当用户选择功能组合时,我将动态创建计划,将总成本等于基本订阅的成本加上所选功能,然后将它们订阅那个具体的计划。如果有人删除或添加新功能,我将创建一个新计划(如果尚未创建)并按比例分配。
我倾向于第二种选择,因为它更加自动化,并且很可能在续订时一切都在 Stripe 端完成。
到目前为止,这两个是我能想到的唯一选择,但我有一种感觉,可能还有其他选择。
有没有人使用过或正在使用 Stripe 类似的东西并且有其他选择?
编辑1
@koopajah I understand that Option 2 is more complicated (already tested it and it feels not so hard to manage) but so far I just cannot get my head around Option 1. I understand how it should work but …
laravel ×4
php ×4
mysql ×3
eloquent ×2
cross-domain ×1
factory ×1
git ×1
gitignore ×1
hierarchical ×1
json ×1
jwt ×1
many-to-many ×1
permissions ×1
status ×1
testing ×1