Использование модели для установления внутреннего соединения между таблицами

Я пытаюсь установить связь между двумя таблицами, статьями и категориями. Это отношение 1 к 1, где articles.category_id = categories.id. У меня установлено следующее.

контроллеры/home.cfc

<cfcomponent extends="Controller">

    <cffunction name="index">

        <cfset qFeaturedArticles = model("articles").findAll(
            where="show_homepage = 1",
            include="categories",
            order="homepage_order"
        ) />

    </cffunction>

</cfcomponent>

модель/categories.cfc

<cfcomponent extends="Model">

    <cffunction name="init">
        <cfset hasOne("articles", foreignKey="category_id") />
    </cffunction>

</cfcomponent>

model/articles.cfc

<cfcomponent extends="Model">

   <cffunction name="init">
    <cfset belongsTo("categories", dependent="nullify") />
</cffunction>

</cfcomponent>

Это ошибка, которую я получаю.

Invalid CFML construct found on line 4 at column 49.ColdFusion was looking at the following text:

=

The CFML compiler was processing:

  • An expression beginning with belongsTo, on line 4, column 16.This message is usually caused by a problem in the expressions structure.
  • A cfset tag beginning on line 4, column 10.
  • A cfset tag beginning on line 4, column 10.
The specific sequence of files included or processed is: \cfusion\wwwroot\foo\index.cfm, line: 4


person justacoder    schedule 17.02.2015    source источник
comment
что находится в строке 4 из index.cfm?   -  person Matt Busche    schedule 17.02.2015
comment
Это cfinclude для wheels/index.cfm; то есть там нет кода, которым манипулировали с моей стороны.   -  person justacoder    schedule 17.02.2015


Ответы (1)


Прежде всего, я хотел бы указать на модель category.cfc. Если вы указываете отношение hasOne, тогда код должен выглядеть следующим образом:

<cfset hasOne("article", foreignKey="category_id") />

Обратите внимание, что вместо articles нужно поставить article в случае hasOne.

Но, буквально говоря, отношение между категориями и статьями должно быть one to many. Я имею в виду, что в категории может быть много статей.

Таким образом, category.cfc должен быть написан следующим образом:

<cfcomponent extends="Model">

<cffunction name="init">
    <cfset hasMany("articles", foreignKey="category_id") />
</cffunction>

person Pankaj    schedule 17.02.2015