2016-04-10 21 views
1

Ich habe ein Zählproblem in Phalcon Volt. Ich habe eine Tabelle mit dem Namen category und dort habe ich zwei Spalten id und cname, und auch eine Tabelle blog und es gibt eine Spalte category. Ich möchte zeigen, wie viele Post in jeder Kategorie haben.
Wenn ich einen Beitrag in die Blog-Tabelle einfügen, füge ich in Kategorie Spalte seine Kategorie id. Zunächst ich nur Liste aller Kategorien wie folgt abrufen:Phalcon Zählung in Volt

[controller] 
$categories = Category::find(); 
$this->view->setVar('category', $categories); 
$cx = Blogs::find(); 
$this->view->setVar('cates',$cx); 

[Volt] 
{% for categories in category %} 
<a href="blog/category/{{categories.cname}}" class="tags">{{ categories.cname }} 
<span>[ 
{% for cx in cates %} 
    {%if cx.category === categories.id %} 
     <?php echo(count($cx->category)); ?> 
    {% endif %} 
{% endfor %} 
]</span></a> 
{% endfor %} 

Es ist wie „1 1 1“ oder „1 1“ oder „1“ machen, aber es sollte wie „3“ oder „2“ machen oder " 1 "Was ist falsch?

Ich versuchte auch, wie dieses, aber die erwartete Ausgabe nicht bekommen:

{% for categories in category %} 
<a href="blog/category/{{categories.cname}}" class="tags">{{ categories.cname }} 
<span>[ 
{% for cx in cates %} 

{%if cx.category === categories.id %} 
{% if loop.first %} {{ loop.length }} {% endif %} 

{% endif %} 

{% endfor %} 
]</span></a> 
{% endfor %} 
+0

Es ist schwer, Ihrem Beispiel zu folgen .. – yergo

Antwort

2

Haben Sie in Phalcon Ihre Beziehungen zwischen Ihren Modellen definiert? Wenn ja, können Sie die integrierten Befehle verwenden, um die Gesamtmenge der Beiträge für jede Kategorie

Beispiel aus der Dokumentation zur Abfrage:

Sie auch „count“ Präfix verwenden können, eine ganze Zahl zurück bezeichnet die zählen der zugehörigen Datensätze:

$robot = Robots::findFirst(2); 
echo "The robot has ", $robot->countRobotsParts(), " parts\n"; 

ich habe nicht viel Erfahrung mit Volt Templating haben, aber ich denke, es wird etwas sein, wie:

{% for categories in category %} 
<a href="blog/category/{{categories.cname}}" class="tags">{{ categories.cname }} 
<span>[ 
    {{ categories.countBlogs }} 
]</span></a> 
{% endfor %} 

Siehe: https://docs.phalconphp.com/en/latest/reference/models.html#taking-advantage-of-relationships

UPDATE - Modellbeziehungen

[Modell: Kategorie]

public function initialize() 
{ 
    // id => primary key name of the Category table 
    // Blogs => name of the table you want to create a relationship with 
    // category => name of the foreign key column in your relationship table 
    $this->hasMany('id', 'Blogs', 'category'); 
} 

[Modell: Blogs]

public function initialize() 
{ 
    // category => blog column name which refers to the ID in the Category table 
    // Category => name of the Category table 
    // id => name of the primary key column in the Category table 
    $this->belongsTo('category', 'Category', 'id'); 
} 
+0

Sir, ich bin nicht in der Lage, es richtig zu verstehen, können Sie bitte einen Arbeitscode als meinen Beispielcode geben? und hier könnte etwas schief gehen, das ich versuche, alles aus meiner Blog-Tabelle zu rendern und Kategorie Spalte, die mit Kategorie Tabellen ID-Spalte übereinstimmt gezählt werden soll. auch Painting error wie: PhalconException :: Die Methode 'initialize' existiert nicht im Model 'Category' – munaz

+0

Entferne die 'parent :: initialize();' Zeile. Funktioniert es dann? – Timothy

0

No Sir, es funktioniert nicht. Aber ich gelöst nur mein Problem wie folgt aus:

[controller] 
$categories = Category::find(); 
$this->view->setVar('category', $categories); 

[volt] 

{% for categories in category %} 
<a href="blog/category/{{categories.cname}}" class="tags">{{ categories.cname }} 
<span>[ 
<?php 
$catcount = $this->modelsManager->executeQuery("SELECT Blogs.category FROM Blogs WHERE Blogs.category = $categories->id");echo(count($catcount)); 
?> 
]</span></a> 
{% endfor %} 

nun seine Arbeits wie erwartet. und hier mache ich keine Beziehungen Ionenmodell.Ist es ok Sir. Bitte! Thnx

+0

Sie nutzen die Kraft von Phalcon nicht wirklich dort. Plus, sollten Sie vermeiden, diese Abfrage in Volt, es ist nicht gut für Ihre MVC-Struktur. – Timothy