問題タブ [yii]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 複数のテーブルで条件付きmysql結合を実行する最も効率的な方法は?(Yii phpフレームワーク)
私は5つのテーブルを持っています:
- tab_template
- template_group
- グループ
- ユーザー・グループ
- ユーザー
Tab_templateは、template_groupリレーショナルテーブルを使用してグループに編成されます。ユーザーは、user_groupリレーショナルテーブルを使用してグループに編成されます。グループはパブリックまたはプライベートにすることができます(テーブルのtinyintブール列を使用)。
次のいずれかであるすべてのtab_templatesを照会したいと思います。
- ユーザーと同じグループ内
- またはパブリックグループで
これが私の現在のクエリです:
SELECT *
FROM tab_template
t
LEFTJOINON 。= 。
左に参加し
ます。= 。
左から真
の場所に
参加します。= 0
OR
(。= 。
AND 。= 2)
GROUPBY 。; template_group
template_group
tab_template_id
t
id
group
template_group
tab_template_id
group
id
user_group
group
private
template_group
group_id
user_group
group_id
user_group
user_id
t
id
それは機能し、それ自体はSUPER遅いわけではありませんが、user_groupテーブルに参加する方法はハックです。
問題は、条件付きチェックのためにuser_groupテーブルに参加する必要があることですが、グループがプライベートでない場合にのみ、その条件付きチェックを実行する必要があります。
ONTRUE条件の3番目のLEFTJOINの代わりに、FROM句(FROM tab_template
t
、user_group
ug
)に別のテーブルを追加できることは知っていますが、YiiのActiveRecordクラスがDcCriteriaで機能するため、これはできません。 tステートメントのその部分を変更します。クエリの他の部分は編集できますが、FROM句は編集できません。ここでAPIをチェックしてください:http : //www.yiiframework.com/doc/api/CDbCriteriaだから、私は自分のようにuser_groupテーブルに参加しています。Yiiの専門家の中には、私がその問題を解決するのを手伝ってくれる人もいるかもしれませんが、とにかくテーブルを結合するのではなく、テーブルをFROMすることで、クエリが高速になるかどうかはわかりません。
どんな助けでも大歓迎です!ありがとう
php - CodeIgniter と Yii の中間の複雑さの PHP フレームワーク?
CI のような簡単なもの (これは、必須の優れた、簡単な、最新のドキュメントを意味します)。しかし、CI よりも多くの機能も備えています。
Yii には多くの機能がありますが、より複雑でもあります (そのため、多くの機能を使用しなければならなくなります)。つまり、Web アプリに機能を追加するには、Yii の新しい小さな機能をたくさん見つけなければならないため、3 倍の時間がかかります。
それは、必要なときに CI が「あなたの邪魔にならないようにする」ようなもので、Yii はあなたの邪魔をします。
この新しい「中間」PHP フレームワークにあると便利な CI に欠けている機能:
- コード生成 (crud)。
- 認証。
- アクセス制御。
- レイアウト。
- ウィジェット。
- より簡単な / 自動化されたページネーション (yii など)
- 簡単なURIパラメータ
Yii が私に問題を引き起こす場所:
すべての小さなタスクには組み込みの機能があるようですが (これは良いことです)、組み込みの機能を使用する必要があります。そうしないと、悪いことが起こります。(CI は道を外れますが、やりすぎます。Yii は多くのことを助けますが、時にはあまりにも多くのことを行います。ドキュメントをふるいにかけなければならないので、それなしではできない機能を見つけます。 CI または非フレームワーク アプリで 4 時間もかからないタスクを達成できます)。
間に何かありますか?
(ASP.NET MVC は「それ」かもしれませんが、私は言語を知らないので、それを学ぶ努力は Yii php フレームワークを本当によく学ぶよりも大きいので、私はPHP フレームワークを探しています)
php - yii フレームワークのコーディング標準
yii フレームワークに従うコーディング標準はありますか? また、それが指定されている場所
yii - CGridView でリレーションを使用する
問題をできるだけ明確に説明します。
私はactiveDataProviderを持っています:
次に、チェックボックス付きの CGridView を使用しています。
次に、メニュー モデルの関係で:
Rolesmenus モデルの関係では:
そのため、$data->roles->can_view 変数にアクセスできません。すべての $data オブジェクトを var_dump すると、_attributes プライベート配列でこれらの属性を確認できますが、CGridView を介してアクセスできません。
何か案は??
model - yii でモデルの値を強制的に更新する方法
モデルAとBの関係があるとしましょう。
私が書くとき:
そして今、Bは(たとえば他のユーザーによって)変更される可能性があります。私が書くとき:
B の古い値を使用します。doSomething() の前に B の値を強制的に更新するにはどうすればよいですか。
php - Yii ページネーション関連データ
Yii で関連データをページ分割する最良の方法は何ですか?
たとえば、投稿があり、コメントをページ分割したいとします。
activerecord - Yii で CActiveRecord モデルへのフォーム データの取得は、あるモデルでは機能しますが、別のモデルでは機能しません
この方法で送信されたフォームを取得しています:
$resume->attributes = $_POST['ResumeModel'];
$profile->attributes = $_POST['UserProfile'];
両方の CActiveRecord モデルは、対応するテーブルからこの前に正しく入力され、正しいデータとすべてを持っています。
両方のモデルのデータは、フォームによって変更された $_POST に存在します。
しかし、attributes プロパティへの割り当ては $profile に対してのみ機能し、$resume に対しては機能しないようです。
その割り当ての後にそれらの値を確認すると、$profile はフォームから編集を取得しません。モデルの定義にそれを引き起こす可能性のあるものはありますか? 私が見る限り、両方のモデルが同様に実装され
ています。なぜこれが起こるのかわかりません。誰か手がかりがありますか?
ありがとう!
yii - yii - radioButtonList と activeRadioButtonList の違い
yii フレームワークで
radioButtonList と activeRadioButtonList の違いは何ですか?
php - yii-リレーションHAS_ONEを使用して、関連するテーブルからデータを取得し、リストページに表示します
私は2つのテーブルを持っています
big(id、bigs_name、smallid)、
small(id、smallguys_name)
したがって、2つのモデル-大小
私は大きなモデルで次の関係を使用しました(この関係が正しいことを願っています)
デフォルトでは、actionIndexは次のように作成されました。
_view.phpで、デフォルトで表示される「smallid」の代わりに「smallguys_name」を表示したいと思います。これは通常のphpで、「smallid」を取得し、「small」から修正された行を選択します。yiiでどうすればいいですか?
私はこれを_view.phpに持っています-
出力-'big'からのID
私はこれを試しました-
そして私は次のCDbExceptionを取得します
列が見つかりません:1054不明な列'has_small.smallid' in'whereclause'
助けてくれてありがとう
php - yiiadmin-yii-framework管理インターフェースの多対多
私は現在、yii-s管理拡張機能yiiadminを拡張しています。
モデル作成ビューでlistBoxの複数選択フィールドを取得する最も簡単な方法は何ですか。これは、多対多の関係を表示します。たとえば、これらの記事とカテゴリの関係を記事とともに保持する「ピボット」テーブルがあります。およびカテゴリテーブル。
私はすでにこれらの関係をモデルで定義しており、Articleテーブルのauthor_idフィールドを介して取得したAuthor.nameなど、他の関係をリストビューに取り込むことさえできました。
ここで、記事作成フォームに、記事が属するカテゴリの複数の選択肢を自動的にこのピボットテーブルに保存する複数の選択リストボックスを含める必要があります。
したがって、これらは、1回の記事送信によるarticle_categoryピボットテーブルへの複数のエントリ/行になります。
同時に、Articleテーブル自体には、カテゴリを参照するフィールドは含まれていません。したがって、ピボットテーブルは記事のid属性を取得し、それをカテゴリの(別のモデル/テーブル)IDに接続して、これから行を作成します。
したがって、たとえば、私はこれらのテーブル/モデルを持っています:
記事>>>id| タイトル| 著者| 文章
カテゴリ>>>id| 名前| 説明
ArticleCategory >>> id | article_id | category_id
そして、この3番目のピボットテーブルに、yiiadminのArticle create view / formからの複数のselectlistBoxからの複数の行を入力したいと思います(多くの場合、1回の送信のみで)。
また、カテゴリテーブルからこのリストボックスにcategory.nameを自動的にレンダリングして、カテゴリIDに適切に関連付け、カテゴリテーブルの名前を表示できるようにします。また、選択と送信によって、ピボットテーブルにカテゴリのIDを入力します(したがって、名前ではありません)
これは可能ですか、そしてこれを行う方法は何でしょうか?