首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Laravel 4中建立SAAS的正确途径

在Laravel 4中建立SAAS的正确途径
EN

Stack Overflow用户
提问于 2013-08-17 16:14:37
回答 2查看 5.4K关注 0票数 14

好的,大约一年前,我写了一个网络应用,帮助组织我的爸爸公司的约会。他现在“没有它就不能做生意”。我已经决定,我想要建立一个SAAS订阅模型,并开放给公众。

它目前构建在代码点火器和php之上,我认为这并不适合SAAS版本。我计划从零开始重建它在拉拉4和使用条纹作为一个支付网关。

我关心的是如何最好地处理多个客户端的数据库/应用程序结构。目前,它只是为一家企业服务,而且非常不抽象,而且是我爸爸公司所需要的。我需要它能够处理不同的数据取决于业务谁使用它。

我已经调查过多租户问题,但我不确定这是否合适。我认为“gmail”风格的方法会更好。一个应用程序/域,在登录后,用户将看到他们的定制仪表板,只有他们的数据。

在我陷入编码之前,我需要找出如何最好地处理一个数据库上的多个“帐户”。我不想为每个用户创建一个表,也不想为每个用户创建一个数据库。

我想我的问题是,谁能为我指出一个正确的方向,如何最好地处理一个月的订阅拉勒维尔?与其说是我在胡思乱想的代码,倒不如说我需要构建什么来处理每个月向客户收费的问题,如果计费失败的话拒绝他们的访问等等。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-17 22:26:00

你读了很多书,做了大量的工作!

首先,让我们暂时完全忽略它的计费方面--在一天结束时,应用程序的这一部分实际上是相当微不足道的。从37signals 中拿出一个页面(第93和94页),在开始实现它之前,用30天的免费试用版发布您的产品(届时您应该知道如何实现它)。

其次,为什么您认为"gmail“不使用多租户,URI结构没有说明底层数据库结构。我很有信心他们不会为他们的每个客户克隆一个数据库模式。因此,您可能已经回答了您自己的问题--,您希望实现多租户

您将希望抽象您的数据库(和应用程序体系结构),老实说,没有比Taylor Otwell(Laravel的创建者)的书“https://leanpub.com/laravel”更好的资源可以帮助您做到这一点。他的书不适合初学者,当你读完这本书的时候,你应该可以自己回答这个问题了。

您不会为每个用户创建一个表或数据库,甚至不会为每个组织创建一个表或数据库。相反,您将在代码中创建抽象数据库结构,这将将用户数据从数据库中提取出来。

考虑检查访问组织的权限,作为另一层用户身份验证。在每个请求中,您都将检查用户是否可以访问特定的组织。您可能还会检查以确保组织仍然处于活动状态(因为它们没有付款而过期了吗?)这种情况在每个请求上都会再次发生,并且很可能发生在filter within laravel上。

这确实导致了开发SaaS应用程序的下一个非常重要的因素。

我不知道你的情况,但我偏执,如果我不确定用户号4506不能看到他不属于的组织的数据的话,我晚上睡不着觉。确保这一点的唯一好方法是通过单元测试,如果您还没有这样做,我强烈建议您学习。

在Laravel 4中,最好的方法是阅读Jeffrey的“https://leanpub.com/laravel-testing-decoded”一书。这本书是非常先进的,但仍然很容易理解,如果你有一个很好的掌握基础。

最后但并非最不重要的是,第一件事是参与社区--我建议的最简单的方法是在#laravel IRC channel (freenode)上空闲。问一些问题,也许回答一些问题,频道里的每个人都很好,反应也很好。

你肯定是在冒险,不要害怕问问题,犯错误。祝好运。

票数 37
EN

Stack Overflow用户

发布于 2013-08-17 22:08:15

作为粗略的概述,我将有一个客户端表和一个订阅表。需要存储的任何其他数据,如联系人或约会,都可以使用外键与客户端表相关联。

在laravel中,您可以使用ORM获取当前登录的客户端,然后通过关系获取属于它们的约会和联系人。

cartalyst.com的laravel有一些有用的工具,包括“哨兵”和“用户社交”,以及将用户帐户与facebook/google/twitter集成在一起等。

Stripe将允许您配置定期付款,并将通知您通过网络挂钩,每次都有付款尝试。您可以将它们记录在payments表中,并将它们与用户/客户端关联。您可以使用这个跟踪谁支付了,以及最近。

此外,请记住,您可能不想立即取消帐户上的失败付款。

Stripe将重新尝试,您最好的响应可能是在晚了两三天之后,或者您收到了无效卡通知,以便与客户联系并提示他们更新他们的付款细节。

这也可能是一个检查他们最后一次登录的机会。如果是一个多月前的话,你可以用一个月的免费时间来记帐,并提醒他们你的应用程序能为他们做些什么。通过这样做,您可以让人们继续使用(并支付)他们已经忘记了他们已经订阅的东西。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18290863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档