【发布时间】:2016-09-16 09:45:52
【问题描述】:
我正在使用 prestashop v 1.6.1.1
我想要得到什么
我正在尝试在后台的客户部分中添加一个名为 dni 的列。
我尝试了什么
我知道执行此操作的文件名为 AdminCustomersController.php,它位于 controllers/admin/AdminCustomersController.php
我也知道通过这个查询我可以得到数据库中的数据:
SELECT ps_address.dni, ps_customer. *
FROM ps_customer
INNER JOIN ps_address ON ps_customer.id_customer = ps_address.id_customer
限制 0 , 30
客户部分的当前查询是:
SELECT a.`id_customer`, `firstname`, `lastname`, `email`, a.`active` AS `active`, `newsletter`, `optin` , a.date_add, gl.name as title, ( SELECT SUM(total_paid_real / conversion_rate) FROM ps_orders o WHERE o.id_customer = a.id_customer AND o.id_shop IN (2, 1) AND o.valid = 1 ) as total_spent, ( SELECT c.date_add FROM ps_guest g LEFT JOIN ps_connections c ON c.id_guest = g.id_guest WHERE g.id_customer = a.id_customer ORDER BY c.date_add DESC LIMIT 1 ) as connect, shop.name as shop_name FROM `ps_customer` a LEFT JOIN ps_gender_lang gl ON (a.id_gender = gl.id_gender AND gl.id_lang = 1) LEFT JOIN ps_shop shop ON a.id_shop = shop.id_shop WHERE 1 AND a.`deleted` = 0 AND a.id_shop IN (2, 1) ORDER BY `date_add` DESC LIMIT 0, 50
我不知道
我不知道如何更改该查询以仅添加 ps_address.dni 并获取其他列。
谢谢
已编辑部分解决
好吧,最后我没有更改 AdminCustomersController.php 我更改了 AdminAddressesController.php 这意味着更改客户/方向后台。
我刚刚添加了这行代码,效果非常好:
$this->fields_list = array(
'id_address' => array('title' => $this->l('ID'), 'align' => 'center', 'class' => 'fixed-width-xs'),
'firstname' => array('title' => $this->l('First Name'), 'filter_key' => 'a!firstname'),
'lastname' => array('title' => $this->l('Last Name'), 'filter_key' => 'a!lastname'),
'address1' => array('title' => $this->l('Address')),
'postcode' => array('title' => $this->l('Zip/Postal Code'), 'align' => 'right'),
'dni' => array('title' => $this->l('DNI'), 'align' => 'right'),
'city' => array('title' => $this->l('City')),
'country' => array('title' => $this->l('Country'), 'type' => 'select', 'list' => $this->countries_array, 'filter_key' => 'cl!id_country'));
现在我有一个地方可以搜索 DNI-customer
【问题讨论】:
-
dni 是 ps_address 的一个字段(地址模型如此),因为每个客户应该有多个地址,因此每个客户应该有多个 dni。从逻辑上讲,您不能这样做。
-
@sarcom 这是一个不错的答案,但是,如果我只想始终获取第一个地址怎么办?这可能是 1-1
-
@sarcom 我刚刚用部分解决方案编辑了我的帖子,谢谢。
-
你早已经预料到我了 :)。顺便说一句,我会将我的解决方案发布到您的答案中。
标签: php prestashop prestashop-1.6