Hallo zusammen,
folgendes Problem. Ich habe in der Tabelle tl_member über 30k Datensätze.
Jetzt habe ich z.B. in der Tabelle tl_content mir ein Feld hinzugefügt das per Select die Werte der Tabelle tl_member mir ausgibt.
Ladezeit ca. 1.26s
PHP-Code:
$GLOBALS['TL_DCA']['tl_content']['fields']['test_alex'] = [
'exclude' => true,
'inputType' => 'select',
'search' => true,
'filter' => true,
'sorting' => true,
'flag' => 11,
'foreignKey' => 'tl_member.id',
'eval' => [
'chosen' => true,
'tl_class' => 'w50',
],
'sql' => [
'type' => 'integer',
'default' => 0,
],
'relation' => [
'type' => 'hasOne',
'load' => 'eager',
],
];
Ladezeit ca. 1.29s
PHP-Code:
$GLOBALS['TL_DCA']['tl_content']['fields']['test_alex'] = [
'exclude' => true,
'inputType' => 'select',
'foreignKey' => 'tl_member.CONCAT(lastname, \' \', firstname, \' \', email)',
'eval' => [
'chosen' => true,
'tl_class' => 'w50',
],
'sql' => [
'type' => 'integer',
'default' => 0,
],
'relation' => [
'type' => 'hasOne',
'load' => 'eager',
],
];
Ladezeit ca. 15.27s
PHP-Code:
$GLOBALS['TL_DCA']['tl_content']['fields']['test_alex'] = [
'exclude' => true,
'inputType' => 'select',
'options_callback' => ['tl_content_alex', 'getUsers'],
'eval' => [
'chosen' => true,
'tl_class' => 'w50',
],
'sql' => [
'type' => 'integer',
'default' => 0,
],
];
class tl_content_alex extends \Contao\Backend
{
public function getUsers()
{
$choices = [];
$objMembers = \Contao\MemberModel::findAll();
if (null === $objMembers) {
return $choices;
}
while ($objMembers->next()) {
$choices[$objMembers->id] = $objMembers->firstname.' '.$objMembers->lastname.' '.$objMembers->email;
}
return $choices;
}
}
Ladezeit ca. 3.23s
PHP-Code:
$GLOBALS['TL_DCA']['tl_content']['fields']['test_alex'] = [
'exclude' => true,
'inputType' => 'select',
'foreignKey' => 'tl_member.id',
'eval' => [
'chosen' => true,
'tl_class' => 'w50',
],
'sql' => [
'type' => 'integer',
'default' => 0,
],
'relation' => [
'type' => 'hasOne',
'load' => 'lazy',
],
];
Ladezeit ca. 3.85s
PHP-Code:
$GLOBALS['TL_DCA']['tl_content']['fields']['test_alex'] = [
'exclude' => true,
'inputType' => 'select',
'foreignKey' => 'tl_member.CONCAT(lastname, \' \', firstname, \' \', email)',
'eval' => [
'chosen' => true,
'tl_class' => 'w50',
],
'sql' => [
'type' => 'integer',
'default' => 0,
],
'relation' => [
'type' => 'hasOne',
'load' => 'lazy',
],
];
Wie bekomme ich mit einem options_callback die Ladezeit auch so niedrig?
Lesezeichen