Datatable icon indicating copy to clipboard operation
Datatable copied to clipboard

id problems

Open ErichNiem opened this issue 10 years ago • 5 comments

I am trying to get the id from my database table to show on my datatable.

So far I have tried

$properties = DB::table('property')
    ->join('vetting', 'vetting.property_id', '=', 'property.id')
    ->where('vetting_status', 'LIKE', $status)
    ->where('property.deleted_at', '=', null)
    ->join('users', 'users.id', '=', 'property.user_id')
    ->select('reference', 'property.complex_number', 'property.complex_name',     'property.street_number', 'property.street_address', 'property.province', 'property.suburb_town_city',   'property_type', 'vetting_status', 'firstname', 'lastname', 'property_id', 'user_id', 'listing_type', 'featured')
    ->get();

    return Datatable::collection(new Collection($properties))
    ->showColumns('property_id', 'reference', 'listing_type')
    ->addColumn('street_address', function($Property){
        return $Property->complex_number . ' ' . $Property->complex_name . ' ' . $Property->street_number . ' ' . $Property->street_address;
    })............

I have tried

return Datatable::collection(new Collection($properties)) ->addColumn('id', function($Property){ return $Property->property_id; }) ->showColumns('reference', 'listing_type')..............

I have also tried

return Datatable::collection(new Collection($properties)) ->showColumns( ['property_id' => 'ID', 'reference' => 'Reference', 'listing_type' => 'Listing Type']) ->addColumn('street_address', function($Property){ return $Property->complex_number . ' ' . $Property->complex_name . ' ' . $Property->street_number . ' ' . $Property->street_address; }).............

my front end code is

{{ Datatable::table() // these are the column headings to be shown ->addColumn('ID', 'Reference', 'Listing Type', 'Street Address', 'Province', 'Suburb', 'Property Type', 'User Name', 'Vetting Status', 'Action') // this is the route where data will be retrieved ->setUrl(route('api.adminproperty', ['status' => $status])) ->setId('adminpropDatatable') ->render() }}

All give me an error Warning: table id = adminprop

Please note, adding the id was an after thought, everything was working perfectly.

ErichNiem avatar Aug 27 '15 10:08 ErichNiem

You should be able to use Datatable::query, there should be no need to use a collection for this use case.

---- On Thu, 27 Aug 2015 20:49:25 +1000 [email protected] wrote ---- I am trying to get the id from my database table to show on my datatable. So far I have tried $properties = DB::table('property') ->join('vetting', 'vetting.property_id', '=', 'property.id') ->where('vetting_status', 'LIKE', $status) ->where('property.deleted_at', '=', null) ->join('users', 'users.id', '=', 'property.user_id') ->select('reference', 'property.complex_number', 'property.complex_name', 'property.street_number', 'property.street_address', 'property.province', 'property.suburb_town_city', 'property_type', 'vetting_status', 'firstname', 'lastname', 'property_id', 'user_id', 'listing_type', 'featured') ->get(); return Datatable::collection(new Collection($properties)) ->showColumns('property_id', 'reference', 'listing_type') ->addColumn('street_address', function($Property){ return $Property->complex_number . ' ' . $Property->complex_name . ' ' . $Property->street_number . ' ' . $Property->street_address; })............

I have tried return Datatable::collection(new Collection($properties))

    ->addColumn('id', function($Property){

        return $Property->property_id;

    })

    ->showColumns('reference', 'listing_type')..............

I have also tried return Datatable::collection(new Collection($properties))

    ->showColumns(

        ['property_id' => 'ID', 'reference' => 'Reference', 'listing_type' => 'Listing Type'])

    ->addColumn('street_address', function($Property){

        return $Property->complex_number . ' ' . $Property->complex_name . ' ' . $Property->street_number . ' ' . $Property->street_address;

    }).............

my front end code is {{ Datatable::table()

// these are the column headings to be shown

->addColumn('ID', 'Reference', 'Listing Type', 'Street Address', 'Province', 'Suburb', 'Property Type', 'User Name', 'Vetting Status', 'Action')

// this is the route where data will be retrieved

->setUrl(route('api.adminproperty', ['status' => $status]))

->setId('adminpropDatatable')

->render() }}

All give me an error

Warning: table id = adminprop Please note, adding the id was an after thought, everything was working perfectly. — Reply to this email directly or view it on GitHub.

timgws avatar Aug 27 '15 10:08 timgws

I have just changed this and I am still getting the same error.

return Datatable::query($properties) ->showColumns('id', 'reference', 'listing_type')................

I have just tried return Datatable::query($properties) ->showColumns('reference', 'listing_type')................

same error,

I also then realized that the error I gave you meant nothing

this is the response from ajax call

file: "C:\lamp\www\in2assets\vendor\chumper\datatable\src\Chumper\Datatable\Engines\CollectionEngine.php" line: 246 message: "Undefined offset: 0" type: "ErrorException"

With Collection

And

file: "C:\lamp\www\in2assets\vendor\chumper\datatable\src\Chumper\Datatable\Engines\QueryEngine.php" line: 56 message: "__clone method called on non-object" type: "Symfony\Component\Debug\Exception\FatalErrorException"

with Query

ErichNiem avatar Aug 27 '15 11:08 ErichNiem

Hey Erich,

Sorry for the short reply earlier, I was on my phone (and also on a holiday!).

Please make sure that with Datatable::query that you are passing the QueryBuilder.

$query = DB::table('property')
    ->join('vetting', 'vetting.property_id', '=', 'property.id')
    ->where('vetting_status', 'LIKE', $status)
    ->where('property.deleted_at', '=', null)
    ->join('users', 'users.id', '=', 'property.user_id')
    ->select(/* columns */)
    // NOTICE I AM NOT CALLING GET HERE! ->get(); */
    ;

    return Datatable::query($query)
        ->//etc
        ;

timgws avatar Aug 31 '15 02:08 timgws

Hi. No stress, this has now broken search functionality.

And order column, also not working

ErichNiem avatar Aug 31 '15 10:08 ErichNiem

@ErichNiem could you please let me know what version you have in your composer file?

timgws avatar Aug 31 '15 23:08 timgws