반응형
Schema, DB 또는 Eloquent를 사용하여 Laravel 4의 배열 또는 객체에서 테이블의 열 이름을 얻는 방법.
사용할 준비가 된 기능을 찾을 수없는 것 같습니다. 사용자 지정 구현이있을 수 있습니다.
고마워.
해결 방법
당시 제가이 대답을했을 때 라 라벨은이 작업을 직접 수행 할 수있는 방법이 없었습니다 , 이제 다음과 같이 할 수 있습니다.
$columns = Schema::getColumnListing('users');
속성을 사용하면 작동하지 않습니다.
$model = new ModelName;
해당 모델에 설정된 속성이 없으며 아무것도 얻지 못합니다.
그런 다음 여전히 실제 옵션이 없으므로 데이터베이스 수준으로 내려 가야했고 이것이 내 BaseModel입니다.
<?php
class BaseModel extends \Eloquent {
public function getAllColumnsNames()
{
switch (DB::connection()->getConfig('driver')) {
case 'pgsql':
$query = "SELECT column_name FROM information_schema.columns WHERE table_name = '".$this->table."'";
$column_name = 'column_name';
$reverse = true;
break;
case 'mysql':
$query = 'SHOW COLUMNS FROM '.$this->table;
$column_name = 'Field';
$reverse = false;
break;
case 'sqlsrv':
$parts = explode('.', $this->table);
$num = (count($parts) - 1);
$table = $parts[$num];
$query = "SELECT column_name FROM ".DB::connection()->getConfig('database').".INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'".$table."'";
$column_name = 'column_name';
$reverse = false;
break;
default:
$error = 'Database driver not supported: '.DB::connection()->getConfig('driver');
throw new Exception($error);
break;
}
$columns = array();
foreach(DB::select($query) as $column)
{
$columns[] = $column->$column_name;
}
if($reverse)
{
$columns = array_reverse($columns);
}
return $columns;
}
}
다음과 같이 사용하십시오.
$model = User::find(1);
dd( $model->getAllColumnsNames() );
참조 페이지 https://stackoverflow.com/questions/19951787
반응형
'MySql' 카테고리의 다른 글
MySQL SQL Oracle의 특정 열에 대해 replace with select 문 사용 (0) | 2020.12.17 |
---|---|
MySQL mysql 뷰에서 동적 매개 변수를 전달하는 방법 (0) | 2020.12.17 |
MySQL 저장 프로 시저, 다중 커서 및 쿼리 결과 처리 (0) | 2020.12.17 |
MySQL Create Database If Not Exists with PDO (0) | 2020.12.17 |
MySQL 오류 1452 MySQL (0) | 2020.12.17 |
댓글