首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >杂货巡检-无法区分返回查询表中的属性

杂货巡检-无法区分返回查询表中的属性
EN

Stack Overflow用户
提问于 2014-04-09 14:51:37
回答 1查看 1.1K关注 0票数 1

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

实体:

人(person_id,person_URL,全名,家乡)

乐队(band_id,band_URL,band_name,country,流派)

Relationships:

喜欢(person_id,band_id,rate)

知道(person_id,known_person_id)

我的问题是:

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

KNOWS person_id | fullname | known_person_id | known_fullname

但是我不能使用*set_relation_n_n*函数,因为关系是(Person ->喜欢-> Person),所以它给了我错误。我想出的另一个解决方案是创建一个自定义表,进行查询,返回我想要的值,并在表中显示它(下面的代码)。返回的自定义表是正确的,但是当我将它呈现给我的Grocery Crud表时,我需要指定$crud->列(‘person _id’、' fullname‘、’已知_ person _id‘、' fullname '),并且它不能区分人的全名和已知人的全名。我要怎么做才能这样展示桌子呢?

2)我在另一个表中有同样的问题,但可以使用函数*set_relation_n_n*‘来管理它,因为它是一种关系(Person ->喜欢-> Band),所以由于它是两个不同的实体,所以没有返回错误。问题是,查询(下面的代码)返回整个表,每页只需要25条记录。当我尝试在查询中使用“限制25”时,它只返回25条记录,“下一页”按钮不起作用。有解决方案吗?

以下是所有资料:

问题1的代码:

代码语言:javascript
复制
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的代码:

代码语言:javascript
复制
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);
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-16 09:56:35

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

选择tb1.person_id,tb1.全名作为Tb1fullName,tb1.known_person_id,person.fullname作为PersonFullName

问题2)我不建议您在查询中直接/手动添加限制。在文件应用程序/config/杂食_crud.php中,有两个与分页直接相关的选项

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

代码语言:javascript
复制
// 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');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22966298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档