2014-09-21 1 views
0

Предположим, у меня есть скриншот с столбцом date, который определяет, когда был сделан снимок экрана. У меня также есть модель GameVersion с start_date и end_date методами экземпляра, определяющими начало и конец данной версии.

Если мне нужна ассоциация screenshots для каждого GameVersion, которая возвращает все скриншоты, сделанные между ее start_date() и end_date(), могу ли я сделать что-нибудь вроде этого?

static $has_many = [ 
    ['screenshots', 'conditions' => ['date >= ? AND date <= ?', $this->start_date(), $this->end_date()]], 
]; 

Если я пытаюсь это, я получаю:

Parse error: syntax error, unexpected '$this' (T_VARIABLE), expecting ']'

В Ruby On Rails, это достигается следующим образом:

has_many :birthday_events, ->(user) { where starts_on: user.birthday }, class_name: 'Event' 

ответ

0

Вы не можете использовать $this со статическим членов, используйте вместо этого self::.

+0

Это приводит к ошибке 'Parse: синтаксическая ошибка, неожиданная '(', expecting ']'' (полная строка: 'static $ has_many = [['screenshots', 'conditions' => ['date> =? AND date <=? ', self :: start_date(), self :: end_date()]]]; '). Чтобы уточнить,' start_date() 'и' end_date() 'являются методами экземпляра, а не статическими/классными методами. – TonyFox

+0

@TonyFox, какая версия php? Я предлагаю вам использовать регулярный синтаксис, чтобы избежать проблем, или, может быть, вы забыли закрыть точку с запятой где-то – meda

+0

5.4.7, а какая часть кода не является регулярным синтаксисом? Если вы не имеете в виду массив () вместо [], который я попробую. – TonyFox