>PHP 프레임워크 >Laravel >라라벨 옴이 뭔가요?

라라벨 옴이 뭔가요?

青灯夜游
青灯夜游원래의
2022-02-14 15:07:243638검색

laravel에서 orm의 전체 이름은 "객체-관계형 매핑"을 의미하는 "객체-관계형 매핑"입니다. 그 기능은 비즈니스를 운영할 때 이러한 방식으로 관계형 데이터베이스와 비즈니스 엔터티 개체를 매핑하는 것입니다. 객체의 속성과 메소드만 조작하면 SQL 문을 처리할 수 있으므로 복잡할 필요가 없습니다.

라라벨 옴이 뭔가요?

이 튜토리얼의 운영 환경: Windows 7 시스템, Laravel 6 버전, Dell G3 컴퓨터.

ORM

ORM이란 무엇입니까? 정식 이름은 Object-Relational Mapping(Object-Relational Mapping)입니다. 이러한 방식으로 특정 작업을 수행할 때 관계형 데이터베이스와 비즈니스 엔터티 개체를 매핑하는 것입니다. 비즈니스 객체, 더 이상 복잡한 SQL 문을 처리할 필요가 없고 객체의 속성과 메소드만 조작하면 됩니다.

ORM 구현 방법

가장 일반적인 두 가지 구현 방법은 ActiveRecord와 DataMapper입니다(전자는 laravel에서 사용됨)

  • ActiveRecord(매우 인기 있음)는 모델과 데이터 사이에 일대일 대응이 있습니다. 테이블,

  • DataMapper에서는 모델과 데이터 테이블이 완전히 분리되어 있습니다.

Laravel의 Eloquent ORM은 ActiveRecord 구현을 사용합니다. 각 Eloquent 모델 클래스는 데이터베이스의 테이블에 해당하며 모델 클래스의 해당 메서드를 호출하여 데이터베이스를 추가, 삭제, 수정 및 쿼리할 수 있습니다.

두 가지 마법 함수인 __call()과 __callStatic()을 이해하세요

class Test{
    //动态调用的时候 没有找到此函数 则执行__call() 方法
    public function __call($method, $parameters){
        echo 22222222222;
        return (new Rest)->$method(...$parameters);
    }
    //静态调用的时候 没有找到此函数 则执行__callStatic()方法
    public static function __callStatic($method, $parameters){
        echo 1111111111;
        return (new static)->$method(...$parameters);
    }
}

class Rest{
  public function foo($name , $age){
  echo 333;
  dump($name,$age);
  }
}

//先调用了__callStatic(), 在调用__call(), 然后调用 foo();
Test::foo('张三',17);  
//只调用了 __call(), 然后调用 foo();
(new Test())->foo('李四',16);die;

laravel Eloqument ORM의 처음 두 가지 마법 함수의 어려움을 이해한 후 Model

/**
 * Handle dynamic method calls into the model. * * @param string $method
  * @param array $parameters
  * @return mixed
 */public function __call($method, $parameters)
{
 if (in_array($method, ['increment', 'decrement'])) {
      return $this->$method(...$parameters);
  }
  return $this->newQuery()->$method(...$parameters);
}

/**
 * Handle dynamic static method calls into the method. * * @param string $method
  * @param array $parameters
  * @return mixed
 */public static function __callStatic($method, $parameters)
{
 return (new static)->$method(...$parameters);
}
의 소스 코드를 살펴보겠습니다

$list = Politician::where('party_id', 1)->count();

새로운 정적 반환 호출자의 인스턴스, new self()는 자체 인스턴스를 반환합니다.

모델에 메서드가 없는 곳에서 eloqument를 사용하여

$list = DB::table('categoty')->get();

질의하는 경우 callStatic() 함수가 먼저 실행되어 AppModelsPolitician 인스턴스를 얻은 다음 ( )를 호출합니다. , $this->newQuery()에서 반환된 인스턴스에서 where()count()와 같은 메서드를 찾습니다.

newQuery() 메서드에서 반환된 인스턴스를 자세히 살펴보세요. 이 두 가지 마법 함수를 이해하고 나면 laravel에서 ORM을 구현하는 어려움을 극복할 수 있습니다.

laravel

rrreee

Eloquent ORM의 쿼리 생성자는 실제로 쿼리 구성을 캡슐화하여 작동을 더 쉽게 만듭니다. 쿼리 생성자의 소스 코드에 관심이 있다면 살펴보세요

[관련 권장 사항: laravel 비디오 튜토리얼

]🎜

위 내용은 라라벨 옴이 뭔가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.