I make a table with number 22 as the column name. How to access this column?
content:
I've tryed 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
none works.
edited as the answer implemented: also get null.
var_dump($orders[0]);
var_dump($orders[0]->id);
var_dump($orders[0]->{'22'});
$col = '22';
$res = $orders[0]->{$col};
var_dump($res);
output:
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
Edit: acording to Paras's comment
Edit2:
to make question simple and clear:
migration:
<?php
use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;
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()
{
//
}
}
Model:
<?php
class Test extends Eloquent
{
}
Controller:
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"));
}
}
data table:
and the log:
[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: [] []
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…