В базе данных SilverStripe по умолчанию используется ANSI
sql_mode
, в которой строковые литералы должны быть заключены в одинарные кавычки. Вам необходимо заменить двойные кавычки, окружающие "Fashion"
, одинарными кавычками, например:
$FilteredStories = DB::query('SELECT C.ID, C.URLSegment, C.Title, B.Title AS "Category"
FROM `articlepage_categories` AS A
JOIN articlecategory AS B ON A.ArticleCategoryID = B.ID
JOIN sitetree AS C ON A.ArticlePageID = C.ID
WHERE B.Title = \'Fashion\' LIMIT 5')
Экранировано здесь, потому что внешние кавычки - это одинарные кавычки.
И ваш запрос будет представлен SQLSelect
примерно так:
$filteredStories = SQLSelect::create();
$filteredStories->selectField('"sitetree"."ID", "sitetree"."URLSegment", "sitetree"."Title", "articlecategory"."Title" AS "Category"');
$filteredStories->setFrom('articlepage_categories');
$filteredStories->addLeftJoin('articlecategory', '"articlecategory"."ID" = "articlepage_categories"."ArticleCategoryID"');
$filteredStories->addLeftJoin('sitetree','"sitetree"."ID" = "articlepage_categories"."ArticlePageID"');
$filteredStories->addWhere('"articlecategory"."Title" = \'Fashion\'');
$filteredStories->setLimit(5);