laravel Как получить доступ к столбцу с номером имени таблицы?

Я делаю таблицу с номером 22 в качестве имени столбца. Как получить доступ к этому столбцу?

введите описание изображения здесь

содержание:

введите описание изображения здесь

Я попробовал thest

$obj = Tablename::find(1)->first(); $obj->22; $obj->'22'; //'syntax error, unexpected ''22'' $obj->"22"; $obj->`22`; $obj[22]; $arr = $obj->toArray(); var_dump($arr); // array(15) { ["id"]=> string(2) "25" ["out_trade_no"]=> string(14) "14847080930025" ["22"]=> string(0) "2" $arr[22]; // 'ErrorException' with message 'Undefined offset: 22' $arr['22']; // 'ErrorException' with message 'Undefined offset: 22' $arr["22"]; // 'ErrorException' with message 'Undefined offset: 22' $arr[`22`]; // 'ErrorException' with message 'Undefined index: ' in $arr[{'22'}]; // 'syntax error, unexpected '{', expecting ']'' in 

никто не работает.

отредактированный в ответ на полученный ответ: также получите значение null.

 var_dump($orders[0]); var_dump($orders[0]->id); var_dump($orders[0]->{'22'}); $col = '22'; $res = $orders[0]->{$col}; var_dump($res); 

вывод:

 object(Order)#537(21){ [ "connection": protected ]=>NULL[ "table": protected ]=>NULL[ "primaryKey": protected ]=>string(2)"id"[ "perPage": protected ]=>int(15)[ "incrementing" ]=>bool(true)[ "timestamps" ]=>bool(true)[ "attributes": protected ]=>array(15){ [ "id" ]=>string(2)"25"[ "out_trade_no" ]=>string(14)"14847080930025"[ "22" ]=>string(1)"2"[ "user_id" ]=>string(2)"49"[ "product_name" ]=>string(4)"test"[ "amount" ]=>string(1)"3"[ "fee" ]=>string(4)"0.03"[ "address_id" ]=>string(1)"3"[ "trade_status" ]=>string(13)"TRADE_SUCCESS"[ "express_name" ]=>string(0)""[ "express_no" ]=>string(0)""[ "buyer_email" ]=>string(0)""[ "modify_at" ]=>string(19)"2017-01-18 10:54:53"[ "created_at" ]=>string(19)"2017-01-18 10:54:53"[ "updated_at" ]=>string(19)"2017-01-18 10:55:26" }[ "original": protected ]=>array(15){ [ "id" ]=>string(2)"25"[ "out_trade_no" ]=>string(14)"14847080930025"[ "22" ]=>string(1)"2"[ "user_id" ]=>string(2)"49"[ "product_name" ]=>string(4)"test"[ "amount" ]=>string(1)"3"[ "fee" ]=>string(4)"0.03"[ "address_id" ]=>string(1)"3"[ "trade_status" ]=>string(13)"TRADE_SUCCESS"[ "express_name" ]=>string(0)""[ "express_no" ]=>string(0)""[ "buyer_email" ]=>string(0)""[ "modify_at" ]=>string(19)"2017-01-18 10:54:53"[ "created_at" ]=>string(19)"2017-01-18 10:54:53"[ "updated_at" ]=>string(19)"2017-01-18 10:55:26" }[ "relations": protected ]=>array(0){ }[ "hidden": protected ]=>array(0){ }[ "visible": protected ]=>array(0){ }[ "appends": protected ]=>array(0){ }[ "fillable": protected ]=>array(0){ }[ "guarded": protected ]=>array(1){ [ 0 ]=>string(1)"*" }[ "dates": protected ]=>array(0){ }[ "touches": protected ]=>array(0){ }[ "observables": protected ]=>array(0){ }[ "with": protected ]=>array(0){ }[ "morphClass": protected ]=>NULL[ "exists" ]=>bool(true)[ "softDelete": protected ]=>bool(false) }string(2)"25"NULLNULL , object(Order)#537(21){ [ "connection": protected ]=>NULL[ "table": protected ]=>NULL[ "primaryKey": protected ]=>string(2)"id"[ "perPage": protected ]=>int(15)[ "incrementing" ]=>bool(true)[ "timestamps" ]=>bool(true)[ "attributes": protected ]=>array(15){ [ "id" ]=>string(2)"25"[ "out_trade_no" ]=>string(14)"14847080930025"[ "22" ]=>string(1)"2"[ "user_id" ]=>string(2)"49"[ "product_name" ]=>string(4)"test"[ "amount" ]=>string(1)"3"[ "fee" ]=>string(4)"0.03"[ "address_id" ]=>string(1)"3"[ "trade_status" ]=>string(13)"TRADE_SUCCESS"[ "express_name" ]=>string(0)""[ "express_no" ]=>string(0)""[ "buyer_email" ]=>string(0)""[ "modify_at" ]=>string(19)"2017-01-18 10:54:53"[ "created_at" ]=>string(19)"2017-01-18 10:54:53"[ "updated_at" ]=>string(19)"2017-01-18 10:55:26" }[ "original": protected ]=>array(15){ [ "id" ]=>string(2)"25"[ "out_trade_no" ]=>string(14)"14847080930025"[ "22" ]=>string(1)"2"[ "user_id" ]=>string(2)"49"[ "product_name" ]=>string(4)"test"[ "amount" ]=>string(1)"3"[ "fee" ]=>string(4)"0.03"[ "address_id" ]=>string(1)"3"[ "trade_status" ]=>string(13)"TRADE_SUCCESS"[ "express_name" ]=>string(0)""[ "express_no" ]=>string(0)""[ "buyer_email" ]=>string(0)""[ "modify_at" ]=>string(19)"2017-01-18 10:54:53"[ "created_at" ]=>string(19)"2017-01-18 10:54:53"[ "updated_at" ]=>string(19)"2017-01-18 10:55:26" }[ "relations": protected ]=>array(0){ }[ "hidden": protected ]=>array(0){ }[ "visible": protected ]=>array(0){ }[ "appends": protected ]=>array(0){ }[ "fillable": protected ]=>array(0){ }[ "guarded": protected ]=>array(1){ [ 0 ]=>string(1)"*" }[ "dates": protected ]=>array(0){ }[ "touches": protected ]=>array(0){ }[ "observables": protected ]=>array(0){ }[ "with": protected ]=>array(0){ }[ "morphClass": protected ]=>NULL[ "exists" ]=>bool(true)[ "softDelete": protected ]=>bool(false) }string(2)"25"NULLNULL , object(Order)#537(21){ [ "connection": protected ]=>NULL[ "table": protected ]=>NULL[ "primaryKey": protected ]=>string(2)"id"[ "perPage": protected ]=>int(15)[ "incrementing" ]=>bool(true)[ "timestamps" ]=>bool(true)[ "attributes": protected ]=>array(15){ [ "id" ]=>string(2)"25"[ "out_trade_no" ]=>string(14)"14847080930025"[ "22" ]=>string(1)"2"[ "user_id" ]=>string(2)"49"[ "product_name" ]=>string(4)"test"[ "amount" ]=>string(1)"3"[ "fee" ]=>string(4)"0.03"[ "address_id" ]=>string(1)"3"[ "trade_status" ]=>string(13)"TRADE_SUCCESS"[ "express_name" ]=>string(0)""[ "express_no" ]=>string(0)""[ "buyer_email" ]=>string(0)""[ "modify_at" ]=>string(19)"2017-01-18 10:54:53"[ "created_at" ]=>string(19)"2017-01-18 10:54:53"[ "updated_at" ]=>string(19)"2017-01-18 10:55:26" }[ "original": protected ]=>array(15){ [ "id" ]=>string(2)"25"[ "out_trade_no" ]=>string(14)"14847080930025"[ "22" ]=>string(1)"2"[ "user_id" ]=>string(2)"49"[ "product_name" ]=>string(4)"test"[ "amount" ]=>string(1)"3"[ "fee" ]=>string(4)"0.03"[ "address_id" ]=>string(1)"3"[ "trade_status" ]=>string(13)"TRADE_SUCCESS"[ "express_name" ]=>string(0)""[ "express_no" ]=>string(0)""[ "buyer_email" ]=>string(0)""[ "modify_at" ]=>string(19)"2017-01-18 10:54:53"[ "created_at" ]=>string(19)"2017-01-18 10:54:53"[ "updated_at" ]=>string(19)"2017-01-18 10:55:26" }[ "relations": protected ]=>array(0){ }[ "hidden": protected ]=>array(0){ }[ "visible": protected ]=>array(0){ }[ "appends": protected ]=>array(0){ }[ "fillable": protected ]=>array(0){ }[ "guarded": protected ]=>array(1){ [ 0 ]=>string(1)"*" }[ "dates": protected ]=>array(0){ }[ "touches": protected ]=>array(0){ }[ "observables": protected ]=>array(0){ }[ "with": protected ]=>array(0){ }[ "morphClass": protected ]=>NULL[ "exists" ]=>bool(true)[ "softDelete": protected ]=>bool(false) }string(2)"25"NULLNULL , object(Order)#537(21){ [ "connection": protected ]=>NULL[ "table": protected ]=>NULL[ "primaryKey": protected ]=>string(2)"id"[ "perPage": protected ]=>int(15)[ "incrementing" ]=>bool(true)[ "timestamps" ]=>bool(true)[ "attributes": protected ]=>array(15){ [ "id" ]=>string(2)"25"[ "out_trade_no" ]=>string(14)"14847080930025"[ "22" ]=>string(1)"2"[ "user_id" ]=>string(2)"49"[ "product_name" ]=>string(4)"test"[ "amount" ]=>string(1)"3"[ "fee" ]=>string(4)"0.03"[ "address_id" ]=>string(1)"3"[ "trade_status" ]=>string(13)"TRADE_SUCCESS"[ "express_name" ]=>string(0)""[ "express_no" ]=>string(0)""[ "buyer_email" ]=>string(0)""[ "modify_at" ]=>string(19)"2017-01-18 10:54:53"[ "created_at" ]=>string(19)"2017-01-18 10:54:53"[ "updated_at" ]=>string(19)"2017-01-18 10:55:26" }[ "original": protected ]=>array(15){ [ "id" ]=>string(2)"25"[ "out_trade_no" ]=>string(14)"14847080930025"[ "22" ]=>string(1)"2"[ "user_id" ]=>string(2)"49"[ "product_name" ]=>string(4)"test"[ "amount" ]=>string(1)"3"[ "fee" ]=>string(4)"0.03"[ "address_id" ]=>string(1)"3"[ "trade_status" ]=>string(13)"TRADE_SUCCESS"[ "express_name" ]=>string(0)""[ "express_no" ]=>string(0)""[ "buyer_email" ]=>string(0)""[ "modify_at" ]=>string(19)"2017-01-18 10:54:53"[ "created_at" ]=>string(19)"2017-01-18 10:54:53"[ "updated_at" ]=>string(19)"2017-01-18 10:55:26" }[ "relations": protected ]=>array(0){ }[ "hidden": protected ]=>array(0){ }[ "visible": protected ]=>array(0){ }[ "appends": protected ]=>array(0){ }[ "fillable": protected ]=>array(0){ }[ "guarded": protected ]=>array(1){ [ 0 ]=>string(1)"*" }[ "dates": protected ]=>array(0){ }[ "touches": protected ]=>array(0){ }[ "observables": protected ]=>array(0){ }[ "with": protected ]=>array(0){ }[ "morphClass": protected ]=>NULL[ "exists" ]=>bool(true)[ "softDelete": protected ]=>bool(false) }string(2)"25"NULLNULL 

Изменить: согласно замечанию Параса

введите описание изображения здесь

Edit2: сделать вопрос простым и понятным:

миграция:

 <?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class Test extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('tests', function($table) { $table->increments('id'); $table->integer('22'); }); } /** * Reverse the migrations. * * @return void */ public function down() { // } } 

Модель:

 <?php class Test extends Eloquent { } 

контроллер:

 public function show() { $tests = Test::all(); foreach($tests as $test) { Log::info($test->id); Log::info($test->{'22'}); Log::info($test->{"22"}); Log::info($test->getAttribute("22")); } } 

Таблица данных:

введите описание изображения здесь

и журнал:

 [2017-02-25 09:16:48] production.INFO: 1 [] [] [2017-02-25 09:16:48] production.INFO: [] [] [2017-02-25 09:16:48] production.INFO: [] [] [2017-02-25 09:16:48] production.INFO: [] [] [2017-02-25 09:16:48] production.INFO: 2 [] [] [2017-02-25 09:16:48] production.INFO: [] [] [2017-02-25 09:16:48] production.INFO: [] [] [2017-02-25 09:16:48] production.INFO: [] [] 

Лучший способ НЕ использовать Integer как имя поля. Это плохая практика. Но если вам нужно, вы должны получить доступ к базе данных с помощью необработанного метода:

 public function show() { $tests = DB::table('test') ->select("22 as twentytwo") ->get(); foreach($tests as $test){ Log::info($test->twentytwo); } } два public function show() { $tests = DB::table('test') ->select("22 as twentytwo") ->get(); foreach($tests as $test){ Log::info($test->twentytwo); } } 

Вы можете использовать следующий синтаксис, который содержится в разделе переменных переменных в документации PHP:

 $obj->{'22'}; 

Также можно использовать фигурные скобки , чтобы четко разграничить имя свойства. Они наиболее полезны при доступе к значениям внутри свойства, содержащего массив, когда имя свойства составлено из нескольких частей, или когда имя свойства содержит символы, которые в ином случае недействительны (например, из json_decode () или SimpleXML).

Попробуй это:

 $obj->getAttributeValue("22"); 

Пожалуйста, отправьте сообщение об ошибке, если оно не работает

Попробуй это:

 $col = '22'; $res = $obj->{$col}; var_dump($res); 

если вы всегда знаете, что это имя 22, вы можете это сделать.

  $myfield = 22; dd($obj->$myfield); 

Я проверил его, и он правильно возвращает значение в поле 22.

Вы можете использовать атрибуты модели $ map, чтобы дать вашему неприятному столбцу другое имя. Пытаться

 $maps = ['22' => 'twentytwo']; $hidden = ['22']; $appends = ['twentytwo']; 

Затем с примером модели

 echo $model->twentytwo; 
 $arr= Tablename::where('id', 1)->lists('22', 'id')->toArray(); $result = $arr[1]; As 1 is the $id var. I tried it in my localhost and it works 

Вопрос аналогичен этому:

Скрыть поле чисел от модели Eloquent в Laravel

В настоящее время это невозможно в Laravel, как показано в этой строке кода, расположенной в vendor\symfony\var-dumper\Symfony\Component\VarDumper\Cloner\VarCloner.php at line 74 .

 if ($zval['zval_isref'] = $queue[$i][$k] === $cookie) { $zval['zval_hash'] = $v instanceof Stub ? spl_object_hash($v) : null; } 

Вот хак.

 if ($zval['zval_isref'] = (isset($queue[$i][$k])) ? ($queue[$i][$k] === $cookie) : false) { $zval['zval_hash'] = $v instanceof Stub ? spl_object_hash($v) : null; } 

Проблема обсуждалась здесь:

https://github.com/laravel/framework/issues/8710

Возможный дубликат того, как я могу использовать существующий столбец с моделью laravel

Тот же ответ применяется здесь; вы можете использовать $model->getAttribute('22') чтобы получить значение атрибута модели.

Попробуйте использовать где: Tablename::where('22','=','value')->first();

 $table = Tablename::get(); foreach ($table as $value){ echo $value->22 // Getting column 22 from table } 

Попробуйте использовать pluck ()

 $plucked = $collection->pluck('22'); $plucked->all();