gpt4 book ai didi

php - Grocery Crud - 无法区分返回查询表中的属性

转载 作者:行者123 更新时间:2023-11-30 23:03:20 24 4
gpt4 key购买 nike

我一直在使用 Grocery Crud开发一个简单的本地应用程序,允许用户自己注册并喜欢乐队并对其进行评分,并选择他们认识的也在该应用程序中注册的人。

实体:
Person(person_id,person_URL, fullname, hometown)
乐队(band_id,band_URL,band_name,country,genre)

关系:
喜欢(person_id,band_id,rate)
知道(person_id,known_person_id)

我的问题是:

1) 我想返回一张人物和已知人物的表格,如下所示:

KNOWS
person_id | fullname | known_person_id | known_fullname<br/>

但我不能使用 *set_relation_n_n* 函数,因为关系是 (Person -> Likes -> Person),所以它给我错误。我想出的另一个解决方案是制作一个自定义表,进行查询以返回我想要的值并将其显示在表中(下面的代码)。返回的自定义表是正确的,但是当我将它渲染到我的 Grocery Crud 表时,我需要指定 $crud->columns('person_id', 'fullname', 'known_person_id', 'fullname'),它无法区分全名人名和已知人的全名。我该怎么做才能以这种方式显示表格?

2) 我在另一个表中遇到了同样的问题,但可以使用函数 *set_relation_n_n* 来解决这个问题,因为它是一种关系(Person -> Likes -> Band),所以因为它是 2 个不同的实体它没有给我返回错误。问题是查询(下面的代码)向我返回了整个表格,而我每页只需要 25 条记录。当我尝试在查询中使用“LIMIT 25”时,它只返回 25 条记录并且“下一页”按钮不起作用。有什么解决办法吗?

下面,所有信息:

问题 1 的代码:

function knows_management()
{
$crud = new grocery_CRUD();
$crud->set_model('model_socialnetwork');
$crud->set_table('knows');
$crud->set_subject('Known');
$crud->basic_model->set_query_str('SELECT tb1.person_id, tb1.fullname, tb1.known_person_id, person.fullname FROM (SELECT person.person_id, person.fullname, knows.known_person_id FROM person INNER JOIN knows ON person.person_id = knows.person_id) tb1 INNER JOIN person ON tb1.known_person_id = person.person_id');<br>
$crud->columns('person_id','fullname','known_person_id','fullname');
$output = $crud->render();
$this->_socialnetwork_output($output);
}

问题 2 的代码:

function likes_management()
{
$crud = new grocery_CRUD();
$crud->set_model('model_socialnetwork');
$crud->set_table('likes');
$crud->set_subject('Like');
$crud->columns('person_id','fullname','band_id','band_name', 'rate');
$crud->basic_model->set_query_str('SELECT tb2.person_id, tb2.fullname, tb2.band_id, band.band_name, tb2.rate FROM(SELECT tb1.person_id, person.fullname, tb1.band_id, tb1.rate FROM(SELECT person.person_id, likes.band_id, likes.rate FROM person INNER JOIN likes ON person.person_id = likes.person_id) tb1 INNER JOIN person ON tb1.person_id = person.person_id) tb2 INNER JOIN band ON tb2.band_id = band.band_id');
$output = $crud->render();
$this->_socialnetwork_output($output);
}

最佳答案

问题 1) 例如,如果您在查询中使用别名会怎样

选择 tb1.person_id、tb1.fullname 作为 Tb1fullName、tb1.known_person_id、person.fullname 作为 PersonFullName

问题 2) 我不建议您在查询中直接/手动添加 LIMIT。在文件 application/config/grocery_crud.php 中,您有两个与分页直接相关的选项

您应该正确使用和配置它们

// The default per page when a user firstly see a list page
$config['grocery_crud_default_per_page'] = 25;

....

//Having some options at the list paging. This is the default one that all the websites are using.
//Make sure that the number of grocery_crud_default_per_page variable is included to this array.
$config['grocery_crud_paging_options'] = array('10','25','50','100');

关于php - Grocery Crud - 无法区分返回查询表中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22966298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com