【问题标题】:Symfony 1 propel - how to get an object by ID without DB select like retrieveByPKSymfony 1推进-如何在没有数据库选择的情况下通过ID获取对象,例如retrieveByPK
【发布时间】:2024-04-16 06:10:02
【问题描述】:

我需要将 Channel 对象设置为 ChannelMedia。 我没有 Channel 对象,而是有 ID。 我可以使用 ChannelPeer 静态方法,retrieveByPK,但这使得 Select to DB 只是为了获取对象。

我如何做到这一点?

检查以下代码:

    $channel = ChannelPeer::retrieveByPK($channelID);
    $channel_media = new ChannelMedia();
    $channel_media->setMedia($this->object);

    // How to pass ID here?
    // Alternatively, how to create object from $channelID without DB conn?
    $channel_media->setChannel($channel);
    $channel_media->setStatus(3);
    $channel_media->save();

【问题讨论】:

  • 如果你能提供帮助,请远离 Peer 类,改用 ActiveQuery,即$channel - ChannelQuery::create()findPk($channelID);

标签: orm symfony1 propel


【解决方案1】:

你的ChannelMedia 类应该有一个setChannelId() 方法。您可以使用它来设置通道 ID,从而避免额外调用数据库。

$channel_media = new ChannelMedia();
$channel_media->setMedia($this->object);
$channel_media->setChannelId($channelID);
$channel_media->setStatus(3);
$channel_media->save();

【讨论】:

  • 谢谢,我没有意识到我有这样的方法。这么简单:)
最近更新 更多