Inline editor only updates the host table

Inline editor only updates the host table

nicontrolsnicontrols Posts: 32Questions: 16Answers: 1

I have a simple table using a left join:

        Editor::inst( $db, 'enqitem', 'enqitemid')
        ->fields(
            Field::inst( 'salstkitem.salsubid' ),
            Field::inst( 'salstkitem.condition1' ),
            Field::inst( 'enqitem.cost' )          
        )
        ->leftJoin('salstkitem', 'salstkitem.salsubid', '=', 'enqitem.itemid')
        ->where('enqitem.enqnr',141316)
        ->debug( true )
        ->process( $_POST )
        ->json();

In the editor, I have hidden the primary key of the non-host table:

            editor = new $.fn.dataTable.Editor( {
                ajax: "datatables.php",
                table: "#example",
                fields: [{
                        name: "salstkitem.salsubid",
                        type: "hidden"
                     },{
                        label: "Condition:",
                        name: "salstkitem.condition1"
                    },{
                        label: "Cost:",
                        name: "enqitem.cost"
                    }
                ]
            });

I've set it to be editable inline:

            $('#example').on( 'click', 'tbody td:not(:first-child)', function (e) {
                editor.inline( this, {
                    onBlur: 'submit'
                } );
            });

When I edit inline, the cost updates successfully, as it's a member of the host table. However condition1 will not update.
If I select the EDIT button, both fields update successfully.

This issue is purely for inline editing.

Does anyone have any idea why?
The debug suggests it isn't trying to update at all. It is purely a SELECT query.

This question has an accepted answers - jump to answer

Answers

  • nicontrolsnicontrols Posts: 32Questions: 16Answers: 1
    Answer ✓

    Allan answered this in another post:

    Yes - if you are writing to a joined table rather than just the master table you need to have Editor submit the joined table's primary key as well (enqitem.enqitemid in this case I guess). When you are inline editing, by default it will only submit the edited field, but you can use the form-options object to change that:

    editor.inline( this, {
        onBlur: 'submit',
        submit: 'allIfChanged'
    } );
    

    Regards,
    Allan

This discussion has been closed.