我需要在当地时间上午9:00向世界各地的用户发送电子邮件.服务器在英国.我能做的是在每个用户和服务器的时间之间设置一个时间差,如果DST不存在,这将完美地起作用.
这是一个例子来说明它:
当服务器在特定星期日凌晨2:00从GMT转到GMT +1(BST)时,这意味着John现在具有-6H的时差.
这种情况下我仍然可以通过更新所有用户的服务器的本地时间之外处理,但一旦我前进/后退的所有其他用户的时候,我还需要一种方法来检测时(时间和日期)的用户生活英国境外将(或不会)将当地时间改为可能的夏令时.
我需要一个PHP方法来了解/检测世界其他地方何时进入/退出夏令时.
我已经开发了一个完整的CakePHP框架网站,我们想为移动设备(主要是iPhone/iPad)制作一个非常简单的网站版本.
有没有办法使用现有网站的新子域(例如mobile.mywebsite.com)来呈现特定的视图?我想避免复制和简化当前的一个以匹配新的要求.我不想在每次需要更改控制器操作时"重新开发"新的CakePHP网站并进行两次更改.
我想知道如何只处理一个身份验证过程和多个表中的"用户".我有4个用户表:用户,管理员,艺术家,茶叶都有特定字段,但我希望所有这些用户只能通过主页上的一个表单连接,然后重定向到他们的特定仪表板.
我认为重定向不应该是一个问题,并且添加的一些路由应该可以工作,但我真的不知道在哪里可以看到/开始这么做.
干杯,
尼古拉斯.
编辑:这是最终解决方案(感谢deizel)
App::import('Component', 'Auth');
class SiteAuthComponent extends AuthComponent {
function identify($user = null, $conditions = null) {
$models = array('User', 'Admin', 'Artist');
foreach ($models as $model) {
$this->userModel = $model; // switch model
$this->params["data"][$model] = $this->params["data"]["User"]; // switch model in params/data too
$result = parent::identify($this->params["data"][$model], $conditions); // let cake do its thing
if ($result) {
return $result; // login success
}
}
return null; // login failure
}
}
Run Code Online (Sandbox Code Playgroud) 我明白为了保存外键,应该使用相关的模型和associate()功能,但是真的值得经历这个
$user = new User([
'name' => Input::get('name'),
'email' => Input::get('email')
]);
$language = Language::find(Input::get('language_id');
$gender = Gender::find(Input::get('gender_id');
$city = City::find(Input::get('city_id');
$user->language()->associate($language);
$user->gender()->associate($gender);
$user->city()->associate($city);
$user->save();
Run Code Online (Sandbox Code Playgroud)
什么时候可以做到这一点?
User::create(Input::all());
Run Code Online (Sandbox Code Playgroud)
我觉得我在这里遗漏了一些东西,也许有更简单,更简洁的方法来处理控制器(和视图)中的外键?
虽然我知道的group,contain,fields和order上一个选项find(),我似乎无法让下面的查询使用CakePHP 2.2.3:
SELECT `User`.*, SUM(`Influence`.`id`) AS matches
FROM `db`.`users` AS `User`
LEFT JOIN `db`.`influences_users` AS `InfluencesUser` ON (`User`.`id` = `InfluencesUser`.`user_id`)
LEFT JOIN `db`.`influences` AS `Influence` ON (`InfluencesUser`.`influence_id` = `Influence`.`id`)
WHERE 1 = 1
AND `Influence`.`id` IN (1, 2, 3, 4)
GROUP BY `User`.`id`
ORDER BY COUNT(`Influence`.`id`) DESC
Run Code Online (Sandbox Code Playgroud)
基本上,我试图用表上的函数检索Users具有Influences1、2、3 和 4的数组,然后按.COUNT()InfluencesCOUNT() DESC
Model::query()在 CakePHP 中是否有一种干净的方法(我不想使用任何 hacks 或类似的函数)来做到这一点?
编辑: 虽然我没有改变我的问题的任何内容,但它实际上不是一个SUM()而是一个 …