라라벨 - 테이블 명을 포함한 칼럼 명 반환하기

문제

SQL 작업 진행 시 Integrity constraint violation: 1052 Column 'id' in where clause is ambiguous 에러가 발생하는 경우가 있습니다.

SQL 에서 사용 중인 테이블 중 'id' 칼럼을 사용하는 테이블이 두 개 이상이라면 'id' 칼럼 사용 시 어떤 테이블의 'id' 인지 파악할 수 없어서 발생하는 에러입니다.

 

해결

라라벨 Model 클래스의 qualifyColumn 메소드 사용하기.

/**
 * Qualify the given column name by the model's table.
 *
 *@paramstring$column
*@returnstring
 */
public function qualifyColumn($column)
{
	if(Str::contains($column, '.')) {
		return $column;
	}
	
	return $this->getTable().'.'.$column;
}

 

static 메소드 추가.

public static function getFullColumnName($column)
{
	return self::TABLE. '.' . $column;
}
  • share