【问题标题】:TYPO3 query equals by another tableTYPO3 查询等于另一个表
【发布时间】:2017-07-06 09:21:48
【问题描述】:

我有 TYPO3 7.6.18,查询有问题。

这行得通

public function getFiltered($offset = 0, $limit = 5){
    $query = $this->createQuery();
    $query->matching($query->equals('cruserId', 3));
    return $query->execute();

但这不起作用

public function getFiltered($offset = 0, $limit = 5){
    $query = $this->createQuery();
    $query->matching($query->equals('cruserId.uid', 3));

    return $query->execute();

这个返回空。为什么?我在另一个表(fe_users)中按条件过滤。我需要按 uid、性别或其他字段过滤。不知道哪里出了问题。

TCA:

'cruser_id' => [
    'exclude' => 1,
    'label' => 'LLL:EXT:fefiles/Resources/Private/Language/locallang_db.xlf:tx_fefiles_domain_model_photo.cruser_id',
    'config' => [
        'type' => 'inline',
        'foreign_table' => 'fe_users',
        'minitems' => 0,
        'maxitems' => 1,
        'appearance' => [
            'collapseAll' => 0,
            'levelLinksPosition' => 'top',
            'showSynchronizationLink' => 1,
            'showPossibleLocalizationRecords' => 1,
            'showAllLocalizationLink' => 1
        ],
    ]
],

型号:

  /**
     * CruserId
     *
     * @var \Fhk\Feusersplus\Domain\Model\User
     * @inject
     */
    protected $cruserId;

    /**
     * Returns the cruserId
     *
     * @return \Fhk\Feusersplus\Domain\Model\User $cruserId
     */
    public function getCruserId()
    {
        return $this->cruserId;
    }

    /**
     * Sets the cruserId
     *
     * @return void
     */
    public function setCruserId($cruserId)
    {
        $this->cruserId = $cruserId;
    }

如果我使用 cruserId.uid - 它只会返回空。我专门通过扩展生成器创建了测试 ext 并使我的模型 tca 相同,但它返回为空。请帮帮我,好人)你现在哪里出了问题?

【问题讨论】:

标签: typo3


【解决方案1】:

我认为cruserId.uid 不是您的表格字段。在 TYPO3 Extabase 查询语法中,您需要始终传递字段名称。

$query->equals($propertyName, $operand, $caseSensitive = true )

参数

  • string $propertyName 要比较的属性的名称
  • mixed $operand 要比较的值
  • bool $caseSensitive 是否应该做相等测试 区分大小写

更多信息TYPO3 Query syntax

【讨论】:

  • $query->matching($query->equals('image.uid', 3)); - 那行得通。 $query->matching($query->equals('user.uid', 3)); - 它也必须有效
【解决方案2】:
$query->getQuerySettings()->setRespectStoragePage(false);
        $query->getQuerySettings()->setRespectSysLanguage(false);

这解决了我的问题

【讨论】:

  • 在这种情况下,您很可能没有在 TypoScript/插件设置中设置storagePid
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多