При вызове CollegeMajor::with('majors')->get()
я хотел бы применить следующий необработанный запрос sql: TRIM(TRAILING SUBSTRING_INDEX(parent_id, ':', -1) FROM parent_id)
к столбцу parent_id
. Значения в parent_id хранятся как 1:1234, 1:3121, 1:1332
и т. Д. ... и поэтому поэтому я хотел бы удалить все после двоеточия. Первичным ключом для CollegeMajor является id, и эти значения являются целыми числами, такими как 1
. Я получаю ошибку ниже, потому что Laravel считает, что сырой запрос - это имя столбца. Как сообщить Laravel о применении этого запроса sql к столбцу project_id
при выполнении отношений?Laravel 5.2 Использование необработанного запроса при определении отношений, связанных с привязкой к модели?
CollegeMajor.php стол
class CollegeMajor extends Model {
public function majors() {
return $this->hasMany('App\Models\CollegeMajor', \DB::raw(TRIM(TRAILING SUBSTRING_INDEX(parent_id, ':', -1) FROM parent_id)))
->where('entity', 'major');
}
}
Ошибка
Unknown column 'college_major.TRIM(TRAILING SUBSTRING_INDEX(parent_id, ':', -1) FROM parent_id)' in 'where clause' (SQL: select * from `college_major` where `entity` = major and `college_major`.`TRIM(TRAILING SUBSTRING_INDEX(parent_id, ':', -1) FROM parent_id)` in (1, 2, 3, 4, 5, 6, 7, 8))
college_majors
id name entity parent_id
1 College of Art college 1234
2 College of Business college 4567
3 Art History major 1:1234
4 Asian Art major 1:1234
5 Accounting major 2:4567
6 Marketing major 2:4567
Как сделать это вернуть?
[
id: 1,
name: 'College of Art',
entity: 'college',
parent_id: 1234,
majors: [
{
id: 3,
name: 'Art History',
entity: 'major',
parent_id: '1:1234'
},
{
id: 4,
name: 'Asian Art',
entity: 'major',
parent_id: '1:1234'
}
]
....
]
Очень близко, я думаю. Я отредактировал свой вопрос. Коллекция - это то, чего я пытаюсь достичь. Какие-либо предложения? –
Я обновил ответ, поскольку забыл добавить 'get()' в конце запроса. Затем он вернет коллекцию. – Gayan
Мне пришлось сделать какое-то хакерское решение, где я получаю все результаты из таблицы, фильтрую результаты только колледжами, добавляю ключ «майоров» к каждому из этих предметов колледжа, затем прокручиваю каждую запись, а если ее майор, то Я прокручиваю каждый из предметов колледжа и выдвигаю его в колледж, к которому он принадлежит. На самом деле это изящное решение, но я думаю, что сейчас это будет сделано. –