多くの場合、それを設計することによって持ち去られ、私が望むものではないことが判明し、プロジェクトごとにスキルが向上し、経験が増えます。
今、私は私の経験を共有したいと思います。
ありふれた例を考えてみましょう
投稿-コメントとこれをすべて生成するユーザー。
すべてに評価があります。これは私たちの問題です。
次のようなことができます。
オプションではないものは何ですか? 各テーブルには、データベースの観点から評価された独自のテーブルがあり、すべてが真実です。
しかし、特にこのコードが時々繰り返されることを考慮し、評価が必要なエンティティがもっとたくさんある場合、特に各テーブルのクラスを評価で説明することはできません。 その結果、すべてが信じられないほどの割合で繁殖します。
したがって、より柔軟なオプションを提案します。
これで、評価付きの単一のテーブルが作成され、この評価の元を示すためのフィールドが追加されました。
本当にそんなに簡単ですか?
評価を設定するためのクラスは非常に簡単です(Zend Frameworkのソリューション):
class Rating extends Zend_Db_Table_Abstract
{
public function setRating($item_id, $user_id, $table)
{
/*
* ,
* $table - item_type,
*/
}
public function getRating($item_id, $table)
{
/*
* ,
* mysql count
*/
}
public function isVoted($item_id, $user_id, $table)
{
//
}
}
* This source code was highlighted with Source Code Highlighter .
プロジェクトのエンティティに評価を追加できるようになりましたが、例は例です。少し気が散ったら、このスキームに従って非常に迅速かつ簡単に多くのことを整理できます:タグ、何かに対するコメント、または実際には何がわからない頭に浮かぶ。
これに、同じものを数回表示するのに役立つ種類のヘルパーをいくつか追加すると、タスクはさらに数回促進されます。
そして、これはあなたがあなたの仕事を楽にすることができる方法のほんの一部です、私はさまざまな問題のためのより多くの異なるソリューションを聞きたいです。
PS:嫌な写真でごめんなさい。