0

データベースからノードを正常に削除しました(チェックしました)が、問題はノード参照フィールドにnidが消えないことです。これを削除するにはどうすればよいですか?これが機能しない私のコードです

if($op == 'delete' && $node->type == 'person'){


    $id = $node->nid;



    $q=db_query("select nid from content_field_movie_cast where field_movie_cast_nid = '$id'"); //get all the movie ids that have the cast
    db_query("DELETE from content_field_movie_cast where field_movie_cast_nid = '$id' "); // delete all the entry for that cast in a all the movies it is involve

    while($result=db_fetch_array($q)){

    $node1=node_load($result['nid']);

                $ctr=0;
                $cnt=count($node1->field_movie_cast);

                while($ctr<$cnt){

                        if($node1->field_movie_cast[$ctr]['nid']==$id){

                        dpm($node1->field_movie_cast[$ctr]['nid']=0);

                        node_delete($nid);

                        }

                $ctr++;
                }


    db_query("update content_type_movie set field_movie_cast_count_value =field_movie_cast_count_value -1 where nid = '".$result['nid']."' ");


    }
    }

これは、名前のないニッドについて話している私が削除したいものの写真でもあります

ここに画像の説明を入力してください

4

2 に答える 2

0

このアプローチは少し奇妙だと思いますが、次のプログラムによるアプローチを採用します。

function hook_form_alter(&$form, &$form_state, $form_id){
    //dsm($form);
    unset($form['field_movie_cast']['und'][0]['nid']['#default_value']);
}

これはD7に基づいているため、D6の場合はコードを少し調整する必要があります。

于 2013-03-20T11:27:15.107 に答える
0

node_ref を使用してからしばらく経ちました。とD6ですが、あなたのアプローチについては少し混乱しています。データベースからノードを削除しましたか? データベースで直接奇妙なことをするのではなく、UI から、またはhttp://api.drupal.org/api/drupal/modules!node!node.module/function/node_delete/6を使用してノードを削除したことを意味しますか?

このノードを参照するノードには、A -> B 参照が保存されたままになります。ノードを編集すると保存できますが、通常は必要です。存在しない参照を削除します。保存/プレビュー前の ID。

于 2013-03-20T09:35:04.120 に答える