Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 细枝中的成员过滤器_Php_Symfony_Twig - Fatal编程技术网

Php 细枝中的成员过滤器

Php 细枝中的成员过滤器,php,symfony,twig,Php,Symfony,Twig,我有一些类别和项目给他们。我希望能够删除只有类别的项目尚未设置。例如,我有分类书籍,但没有添加具体的书籍,所以我可以删除它。我有食物这一类,有比萨饼、三明治、苹果——所以我不能删除它。我在想怎么做才是最好的 <table class="table table table-striped spacer"> {% for c in cat %} <tr> <td> {# If in e

我有一些类别和项目给他们。我希望能够删除只有类别的项目尚未设置。例如,我有分类书籍,但没有添加具体的书籍,所以我可以删除它。我有食物这一类,有比萨饼、三明治、苹果——所以我不能删除它。我在想怎么做才是最好的

<table class="table table table-striped spacer">
    {% for c in cat %}
        <tr>
            <td>
                {# If in edit mode, display edit form #}
                {% if id == c.id %}

                <form class="form-inline" action="{{ path('edit_category', {'id': c.id}) }}" method="post" {{ form_enctype(form) }}>

                    {% form_theme form 'EMBudgetTrackerBundle:Forms:inputs.html.twig' %}

                    {% for field in form %}
                    {{ form_row(field) }}
                    {% endfor %}

                    <button type="submit" class="btn"><i class="icon-ok"></i></button>

                </form>

                {# Else display the name #}
                {% else %}
                    {{ c.name }} 
                    <a href="{{ path('edit_category', {'id': c.id}) }}"><i class="icon-pencil"> </i></a> 
                    <a href="{{ path('delete_category', {'id': c.id}) }}"> <i class="icon-remove"></i></a> 
                {% endif %}
            </td>
        </tr>
    {% endfor %}
</table>

但我不知道是否有办法做到这一点。有人能给我一些想法吗?提前非常感谢!:)

根据您的应用程序,您可以做几件事

我的偏好是显示所有类别的删除链接,并在实际的删除页面上进行验证。这有两个额外的好处:

  • 让您在删除页面上思考此逻辑。许多人被隐藏链接所困扰,当用户删除一个类别时,他们忘记了实际检查该逻辑。这意味着,如果他们手动更改一个删除链接,以包含包含项目的类别ID,您的应用程序将很乐意将其删除
  • 降低整个应用程序的复杂性。并不是说简单的MySQL查询会使应用程序更加复杂,但它确实可以帮助视图层在没有条件逻辑显示链接的情况下表现得更清晰
  • 减少服务器负载。在打印删除链接之前,您不必检查每个类别中的子项(不过,根据您的设置,这可能是一个便宜的操作)
  • 它让用户知道发生了什么事。否则,在不全面了解您的应用程序的情况下,他们会想知道为什么没有删除链接。如果有一个删除链接,当他们点击它时会显示一个错误,这将告诉他们,如果他们想删除一个类别,他们需要删除所有的子项
话虽如此,您可以这样做:

SELECT
    c.category_name,
    c.category_id,
    COUNT(f.food_id) AS children
FROM 
    categories c
    LEFT JOIN food f ON (c.category_id = f.food_id)
GROUP BY
    c.category_id

这显然是在猜测您的数据库结构,但这将为您提供一个类别列表,其中每个类别都有子类别的计数

非常感谢您的想法!:)
SELECT
    c.category_name,
    c.category_id,
    COUNT(f.food_id) AS children
FROM 
    categories c
    LEFT JOIN food f ON (c.category_id = f.food_id)
GROUP BY
    c.category_id