データが既にDBに追加された後にカスタムフィールドの作成に問題があります。私はこれをしばらく見ていて、私の脳は閉鎖されています。私はできる限りベストを試して説明します。既に入力されたデータの後に作成されたカスタムフィールド
私は2つのテーブル、custom_fieldsとcustom_fields_valuesを持っています。私はまた、テーブルの列を介してこれらのフィールドを並べ替える。私がdbからそれらを引っ張ると、結果をフィールドと同じ順序で表示させるためにテーブルを結合する必要があります。私がしなければ、データが混ざり合ってしまいます。
$customfield = $pdo->prepare("SELECT * FROM custom_fields ORDER BY fieldorder ASC");
$customfield->execute();
$customfield = $customfield->fetchAll(PDO::FETCH_ASSOC);
$customfieldvals = $pdo->prepare("SELECT vals.* FROM custom_fields_values vals JOIN custom_fields fields ON fields.id = vals.fieldid WHERE vals.related_system=:relsystem ORDER BY fields.fieldorder ASC");
$customfieldvals->bindParam(':relsystem', $get_system['id'], PDO::PARAM_STR);
$customfieldvals->execute();
$customfieldvals = $customfieldvals->fetchAll(PDO::FETCH_ASSOC);
私はforeach
ループを持っていて、データを正しく表示しています。問題は、custom_fieldsテーブルでは作成されたが、custom_fields_valuesテーブルでは作成されていないので、値がない新しいカスタムフィールドを追加すると、ON fields.id = vals.fieldid
に一致しません。このフィールドに値がないときにフィールドを使用すると、別のフィールドの値が使用されます。本質的には、それはフィールドのid
レベルとfieldid
の値で一致しないので、すべてが台無しになる。
値の行が作成されていない場合、別のフィールドの値を取る代わりに、NULL
が表示されます。
EDIT
アムは、私はこれについて正しい道を行くか、カスタムフィールドの値は、カスタムフィールドではなくJOIN
方法に従ってください持っている良い方法はありますか?
LEFT JOINは機能しませんでした。それは同じ結果を持っています。 – CrunchyToast
'Right Join'を試しましたか? –
@CrunchyToastこのクエリを試すこともできます。 'SELECT vals。* FROM custom_fields fields LEFT JOIN custom_fields_values vals ON fields.id = vals.fieldid WHERE vals.related_system =:relsystem ORDER BY fields.fieldorder ASC' –