小编Stu*_*nig的帖子

Laravel 5 - 迁移中的复合键索引

综合指数是我没有完全了解的主题,我不确定我是否做得对?或者,如果 Laravel 在迁移时正确解析我的代码。这看起来正确吗?

Schema::create('friends', function(Blueprint $table)
{
    $table->increments('id');
    $table->integer('requester_id')->unsigned();
    $table->integer('requestee_id')->unsigned();
    $table->timestamps();

    $table->foreign('requester_id')->references('id')->on('users');
    $table->foreign('requestee_id')->references('id')->on('users');

    $table->unique(['requester_id', 'requestee_id'], 'composite_index');
});
Run Code Online (Sandbox Code Playgroud)

这是 Sequel Pro 显示的内容:

http://i.imgur.com/5A4LZH3.png

php laravel laravel-5

5
推荐指数
1
解决办法
6064
查看次数

Rails - 与 WHERE 和 ORDER 有一个关系?

我在 User 模型中有以下关系。

has_many :subscriptions, dependent: :destroy
has_one :subscription, -> { where 'end_date >= ?', Date.today }
Run Code Online (Sandbox Code Playgroud)

:subscription 本质上是他们最新的月度订阅。:subscriptions 是他们之前所有每月订阅(包括最新订阅)的数组。他们列出了 start_date、end_date、user_id、plan_id、payment_method。

当订阅计划升级或降级时,我将当前订阅的 end_date 更改为 Date.today(表示订阅今天结束),然后创建一个从今天开始并在一个月后结束的新订阅。

将 end_date 作为 Date.today 的问题在于 WHERE 子句将获取取消的订阅和新的订阅。但是会倾向于取消订阅,因为 SQL 查询在 ORDER BY 类上生成了主 ID 升序的附加信息。

ORDER BY "subscriptions"."id" ASC LIMIT 1
Run Code Online (Sandbox Code Playgroud)

对于我的一生,我无法弄清楚如何将 ID 上的 ORDER BY 从 ASC 反转为 DESC。但我更喜欢它根据 created_at 时间戳进行排序。以下将是仅用于排序的适当代码,但除了 ORDER BY 子句之外,我还需要 WHERE 子句。

has_one :subscription, -> { order 'created_at desc' }
Run Code Online (Sandbox Code Playgroud)

有没有人想过如何将两者结合起来?

ruby sql ruby-on-rails relationship has-one

2
推荐指数
1
解决办法
3442
查看次数

标签 统计

has-one ×1

laravel ×1

laravel-5 ×1

php ×1

relationship ×1

ruby ×1

ruby-on-rails ×1

sql ×1