Php 使用“在Symfony2中查找查询”;使用「;
我正试图通过此查询从数据库中获取一些信息:Php 使用“在Symfony2中查找查询”;使用「;,php,symfony,propel,Php,Symfony,Propel,我正试图通过此查询从数据库中获取一些信息: $broadcastsQuery = BroadcastQuery::create() ->limit(20); ->useBroadcastPartQuery(null, \Criteria::INNER_JOIN) ->useTopRelatedByIdTopBeginQuery(null, \Criteria::INNER_JOIN) ->en
$broadcastsQuery = BroadcastQuery::create()
->limit(20);
->useBroadcastPartQuery(null, \Criteria::INNER_JOIN)
->useTopRelatedByIdTopBeginQuery(null, \Criteria::INNER_JOIN)
->endUse()
->useTopRelatedByIdTopEndQuery(null, \Criteria::RIGHT_JOIN)
->endUse()
->endUse()
->filterBySended(true)
->find();
下面是我的schema.xml文件的一部分以及相关的表:
<table name="broadcast">
<column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" />
<column name="id_channel" type="integer" />
<column name="id_media" type="integer" />
<column name="start_at" type="timestamp" />
<column name="title" type="varchar" size="255" />
<column name="sended" type="boolean" />
<unique name="broadcast_id_plurimedia">
<unique-column name="id_plurimedia" />
</unique>
<foreign-key foreignTable="channel">
<reference local="id_channel" foreign="id" />
</foreign-key>
</table>
<table name="broadcast_part">
<column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" />
<column name="id_broadcast" type="integer" />
<column name="id_top_begin" type="integer" />
<column name="id_top_end" type="integer" />
<foreign-key foreignTable="broadcast">
<reference local="id_broadcast" foreign="id" />
</foreign-key>
<foreign-key foreignTable="top">
<reference local="id_top_begin" foreign="id" />
</foreign-key>
<foreign-key foreignTable="top">
<reference local="id_top_end" foreign="id" />
</foreign-key>
</table>
<table name="top">
<column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" />
<column name="id_channel" type="integer" />
<column name="genre" type="varchar" size="20" />
<column name="source" type="varchar" size="20" />
<column name="real_date" type="timestamp" />
<column name="frame" type="tinyint" />
<column name="title" type="varchar" size="255" />
<column name="orphan" type="boolean" />
<column name="type" type="varchar" size="10" />
<foreign-key foreignTable="channel">
<reference local="id_channel" foreign="id" />
</foreign-key>
</table>
我知道我可以在第二次使用“top”表(useTopRelatedByIdTopEndQuery)时使用别名,但我找不到方法
我还遇到了另一个问题,当我尝试仅使用一次来验证是否正确地从数据库检索数据时,我的广播对象中没有任何BroadcastPart
以下是我收藏中的一段广播:
[0] => Broadcast Object
(
[startCopy:protected] =>
[id:protected] => 1
[id_channel:protected] => 328
[start_at:protected] => 2013-09-05 09:31:00
[title:protected] => Killo Design
[sended:protected] => 1
[aChannel:protected] =>
[collBroadcastParts:protected] =>
[collBroadcastPartsPartial:protected] =>
[alreadyInSave:protected] =>
[alreadyInValidation:protected] =>
[alreadyInClearAllReferencesDeep:protected] =>
[broadcastPartsScheduledForDeletion:protected] =>
[validationFailures:protected] => Array
(
)
[_new:protected] =>
[_deleted:protected] =>
[modifiedColumns:protected] => Array
(
)
[virtualColumns:protected] => Array
(
)
)
查询的别名实际上由传递给它的参数表示
null
请尝试以下代码
$broadcastsQuery = BroadcastQuery::create('a')
->limit(20);
->useBroadcastPartQuery('b', \Criteria::INNER_JOIN)
->useTopRelatedByIdTopBeginQuery(null, \Criteria::INNER_JOIN)
->endUse()
->useTopRelatedByIdTopEndQuery('c', \Criteria::RIGHT_JOIN)
->endUse()
->endUse()
->filterBySended(true)
->find();
查询的别名实际上由传递给它的参数表示
null
请尝试以下代码
$broadcastsQuery = BroadcastQuery::create('a')
->limit(20);
->useBroadcastPartQuery('b', \Criteria::INNER_JOIN)
->useTopRelatedByIdTopBeginQuery(null, \Criteria::INNER_JOIN)
->endUse()
->useTopRelatedByIdTopEndQuery('c', \Criteria::RIGHT_JOIN)
->endUse()
->endUse()
->filterBySended(true)
->find();
我仍然有一个问题,因为在我的收藏中我仍然没有任何部分。转储仍然与第一个相同one@Genesor它被称为“延迟加载”。如果你想得到你的日期,你必须调用“get”方法。或者您可以使用
->joinWith…()
-它还可以使用first requestOk获取所有需要的数据感谢您的解释,但由于限制(),我不能使用“joinWith”。我仍然有一个问题,因为我的集合中仍然没有任何广播部分。转储仍然与第一个相同one@Genesor它被称为“延迟加载”。如果你想得到你的日期,你必须调用“get”方法。或者您可以使用->joinWith…()
-它还可以通过第一个请求获取所有需要的数据OK感谢您的解释,但由于限制(),我不能使用“joinWith”。