你不得不忍受我在这里可能会使一些术语略显错误,因为我甚至不知道这属于整个"多租户"软件作为服务'类别,但它确实如此.
我为客户开发了一个会员系统(用PHP).我们现在正在考虑将其作为完全托管的解决方案提供给我们的其他客户,提供子域(甚至是他们自己的域).
就数据存储而言,我似乎在桌面上有的选项是:
选项1 - 将所有内容存储在一个大数据库中,并在需要它的表上有一个'client_id'字段(它将有大约30个表适用),并有一个'clients'表存储它们的主要设置,详细信息等等和要映射到它们的域.然后,这只是设置一个包含其各自客户端ID的全局可访问变量 - 我显然必须修改每个查询以检查client_id列.
选项2 - 拥有一个包含"共享参考"表和"客户"表的主表.然后拥有其他数据库的"块",每个数据库包含10个客户端.客户端将获得自己的数据库表,前缀为其客户端ID.这增加了一点安全性,以防止在出现问题时看到其他客户端数据.
选项3 - 与选项2完全相同,除了每个客户端都有1个数据库,完全将它们与其他客户端隔离,理论上提供更多的保护,如果1个客户的表被黑客攻击或以其他方式损坏,它就不会影响其他人.最大的缺点是,在部署新客户端时,整个数据库,用户和密码需要设置等等.这可能还会导致相当大的开销,或者就像你让每个人都在一起一样数据库?
还有几点 - 其中一些客户将拥有5000多个"客户"以及这些客户的所有细节 - 这就是为什么选项1可能有点问题 - 如果我有100个客户,那可能相同一张表中超过五十万行.
我是否正确认为选项3将是客户数据(和支付信息)安全性至关重要的最佳方式.根据我的建议,有些人说选择1是因为"它更容易",但我真的不这么认为.我认为这是潜在的瓶颈,因为如果他们拥有自己的数据库,我肯定可以更容易地移动客户端.
(仅供参考系统基于PHP的PHP系统)
我正在创建帖子的基本列表视图,并需要指向"编辑"页面的链接.
我正在使用刀片,而我所拥有的是一个带有foreach循环的表格,显示每个帖子以及编辑/删除按钮.
我想要做的是使用blade的URL :: to来获取编辑和删除页面的链接,以确保一致的链接.
我尝试使用的代码(请记住这是在foreach循环中,因此$ post-> id var)是这样的:
<a href="{{ URL::to('admin/posts/edit/$post->id') }}" class="btn btn-mini btn-primary">Edit Post</a>
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我也试过了
<a href="{{ URL::to('admin/posts/edit/<?php echo $post->id; ?>') }}" class="btn btn-mini btn-primary">Edit Post</a>
Run Code Online (Sandbox Code Playgroud)
哪个也行不通.
我没有得到任何错误,链接字面上最终是:
http://domain.dev/admin/posts/$post->id
Run Code Online (Sandbox Code Playgroud)
有什么方法可以解决这个问题吗?
我有一个分类表.每个类别都可以有一个可选的父级(如果没有父级,则默认为0).
我想要做的是构建一个包含类别级别的简单html列表树.
示例日期:
Foods
-- Fruit
---- Apple
---- Banana
---- Orange
-- Veg
---- Cucumber
---- Lettuce
Drinks
-- Alcoholic
---- Beer
---- Vodka
Misc
-- Household Objects
---- Kitchen
------ Electrical
-------- Cooking
---------- Stove
---------- Toaster
---------- Microwave
Run Code Online (Sandbox Code Playgroud)
请注意,这需要适用于大约10'级别'.我喜欢它是无限的但我真的不想沿着使用嵌套集模型的路线走下去,因为它会导致这个项目的巨大延迟.
关于laravel的文档是可怕的,没有真正的参考,甚至从哪里开始.我已经玩了几天试图弄清楚要做什么,似乎没有任何地方没有一个巨大的混乱块,每个循环在彼此10次.
我在我的模型中使用以下内容获取了我的数据树:
<?php
class Item extends Eloquent {
public function parent()
{
return $this->hasOne('Item', 'id', 'parent_id');
}
public function children()
{
return $this->hasMany('Item', 'parent_id', 'id');
}
public function tree()
{
return static::with(implode('.', array_fill(0,10, 'children')))->where('parent_id', '=', '0')->get();
}
} …Run Code Online (Sandbox Code Playgroud) 我很长一段时间都是开发人员,但是表格一直是我最不喜欢的部分,更具体地说是设计它们!
我真的很想知道你是怎么做形式的,为什么.我已经过了与其他开发商一些讨论<div>VS <p>的表单字段.你会坚持哪一个,为什么?
我正在谈论的一个例子:
<form action="" method="post">
<p>
<label for="username">Username:</label>
<input type="text" name="username" id="username" />
</p>
<p>
<label for="submit"></label>
<input type="submit" name="submit" id="submit" value="Log In" />
</p>
</form>
Run Code Online (Sandbox Code Playgroud)
VS
<form action="" method="post">
<div>
<label for="username">Username:</label>
<input type="text" name="username" id="username" />
</div>
<div>
<label for="submit"></label>
<input type="submit" name="submit" id="submit" value="Log In" />
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
在风格方面,似乎你可以做到两者都差不多,所以它只是个人偏好,还是背后使用其中的逻辑呢?
谢谢你的时间 :)
更新 我最后关注了一篇关于HTML5表单的好文章,并且实际上发现它允许更好的表单样式.从发展的角度来看,它们更有组织性.对于任何感兴趣的人,它位于:http://24ways.org/2009/have-a-field-day-with-html5-forms
我正在编写一个脚本,它基本上允许我在单个get请求的查询字符串中发送一个URL和两个整数维度.我正在使用base64对它进行编码,但它很长,而且我担心URL可能会变得太大.
有没有人知道另一种更短的方法呢?它在get请求中收到时需要可解码,所以md5/sha1是不可能的.
谢谢你的时间.
编辑:抱歉 - 我应该更好地解释一下:好的,在我们的网站上,我们会显示已发布以供审核的网站的屏幕截图.我们有自己的缩略图/截图服务器.我基本上将使图像标记包含一个编码字符串,该字符串存储用于截取屏幕截图的URL,以及要显示的图像的宽度/高度.然而,我不想在"原始文本"中让世界看到它.显然,base64可以由任何人决定,但我们不希望你的普通乔获取URL路径.真的我需要在一个GET请求中获取:url,width,height.
我做我的网站,这基本上是说如果当前数组项和下一个之间的X变动百分比,抛出一个错误" PHP的"红绿灯"式预警系统.
所以,我在foreach循环中遍历我的数组元素,但是需要能够做到这样的事情:(注意:这只是一个基本的例子,但应该足以得到这个想法)
foreach($array as $a)
{
$thisValue = $a['value'];
$nextValue = next($a['value']);
$percentageDiff = ($nextValue-$thisValue)/$thisValue;
}
Run Code Online (Sandbox Code Playgroud)
我已经使用next()标记来获取下一个值但是理解这只适用于数组.还有其他我可以用来获得下一个foreach项目的东西吗?
谢谢你的时间!
我正试图找出处理php项目的最佳方法.它是几年前在一个自定义框架上构建的 - 框架不是严格的MVC ......它只是有控制器和视图,以及库.
我已经添加了额外的功能,它开始感觉非常像一个完整的混乱,旧代码和新代码混淆,没有像样的数据库管理.
我很难决定我最好的选择.一方面,我可以继续修补现有的代码库,希望我可以使它更有用和更具未来性,或转移到codeigniter(注意:我说codeigniter,因为我有相当多的经验).
Codeigniter选项显然意味着我必须经历所有事情,毫无疑问会有相当多的重新编码,但从长远来看,它可能是值得的.
我正在考虑另一种选择,那就是Laravel框架.我没有直接经验,但是我听说Laravel 4(尚未发布)应该是优秀的.
那么,把这三个选项放在桌面上,你会选择哪个以及为什么?我正在寻找一个令人信服的理由选择一个而不是另一个,坦率地说,我不知道哪条路线我现在最好采取的方式!
我在MySQL Workbench中设计了我的数据库,并设置了所有外键,等等.
我想在Laravel 4中使用这个数据库模式,但是从文档中没有任何能力来处理现有的数据库表.根据我的理解,其他框架(如Cake及其"Baking")允许您根据数据库中已有的表自动生成模型类.
我到处都环顾四周,对Laravel 4一无所知.我发现最接近的是Jeffrey Way的工匠生成器套件,但这只会创建基本模型,并且不会检测已建立的外键关系.
这是否可能与Laravel 4一起使用,或者我将不得不手动完成所有操作?
我有一个远程加载的字符串,字符串里面是很大一部分文本.在文本的一部分中,有一个标志,基本上是由图像包围的"图像"一词(如图:!图像!) - 将其视为图像的占位符.
我正在尝试做的是javascript替换!图像!用一个实际的HTML:
<img src="./images/the_image.png" class="image">
Run Code Online (Sandbox Code Playgroud)
我知道可以简单地做到这一点:
var theString = 'some string goes here !image!';
theString.replace('!image!', '<img src="./images/the_image.png" class="image">');
Run Code Online (Sandbox Code Playgroud)
但是,这不允许您进行多次替换.
有没有办法在这里替换所有?我假设正则表达式可能是一个选项,但遗憾的是,由于它在条件中有符号(感叹号),因此无法确定从哪里开始.
我查看了SO上的相关帖子,但没有一个工作(我再次假设由于符号).