라벨에 대해 가장 많이 물어본 질문 11개.

17839 단어 phplaravel
Laravel은 웹 응용 프로그램을 쉽게 개발할 수 있도록 도와주는 무료 오픈 소스 PHP 프레임워크입니다.여러 가지 PHP 프레임이 있지만 가장 유행하는 것은 Laravel입니다.가장 인기 있는 사용자로서 문제가 많다.그래서 오늘 우리는 라벨에 대해 가장 자주 묻는 질문을 토론할 것이다.

라벨에 대해 가장 많이 물어본 질문 11개.

1. Laravel 5에서 맞춤형 조수의 가장 좋은 실천은 무엇입니까?
답변:
응용 프로그램 폴더에 helpers.php 파일을 만들고 composer를 사용하여 로드합니다.
"autoload": {
    "classmap": [
        ...
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "files": [
        "app/helpers.php" // <---- ADD THIS
    ]
},
composer.json 파일에 추가한 후 다음 명령을 실행합니다.
composer dump-autoload
helpers.php 파일을 PSR-4 네임스페이스의 클래스 파일이 아니기 때문에 app 디렉토리에 저장하는 것이 싫으면 laravel.com 웹 사이트에서 helpers.php을 부트 디렉토리에 저장하는 작업을 수행할 수 있습니다.composer.json 파일에서 다음을 설정해야 합니다.
"files": [
    "bootstrap/helpers.php"
]
대체 답안:
이 답안은 Laravel의 일반 사용자 정의 클래스에 적용됩니다.
첫 번째 단계: Helpers(또는 다른 사용자 정의 클래스) 파일을 만들고 일치하는 이름 공간을 줍니다.당신의 수업과 방법을 적어 놓으세요.
<?php // Code within app\Helpers\Helper.php

namespace App\Helpers;

class Helper
{
    public static function shout(string $string)
    {
        return strtoupper($string);
    }
}
2단계: 별칭 만들기:
<?php // Code within config/app.php

    'aliases' => [
     ...
        'Helper' => App\Helpers\Helper::class,
     ...
3단계: 프로젝트 루트 디렉토리에서 composer dump-autoload 실행
4단계: 블레이드 템플릿에서 사용:
<!-- Code within resources/views/template.blade.php -->

{!! Helper::shout('this is how to use autoloading correctly!!') !!}
추가 포인트: Laravel 응용 프로그램 중 어느 곳에서든 이 클래스를 사용합니다.
<?php // Code within app/Http/Controllers/SomeController.php

namespace App\Http\Controllers;

use Helper;

class SomeController extends Controller
{

    public function __construct()
    {
        Helper::shout('now i\'m using my helper class in a controller!!');
    }
    ...
자료 출처: http://www.php-fig.org/psr/psr-4/
자동 로드 소스: http://php.net/manual/en/language.oop5.autoload.php

2. "Laravel에 Mcrypt PHP 확장이 필요한"오류를 어떻게 해결합니까?
답변:
웹 지원 확장과 명령행 지원 확장은 다를 수 있습니다.터미널에서 php -m을 실행하여 mcrypt이 나열되어 있는지 확인합니다.없으면, 터미널에서 php php.ini을 실행해서 명령줄이 --ini 파일을 어디서 불러오는지 검사합니다.
php.ini 파일에서 확장자를 사용할 수 있습니다.
OSX
터미널이 OSX와 함께 제공되는 네이티브 PHP를 가리키기 때문에 많은 OSX 사용자들이 문제를 겪고 있습니다.반대로 bash 프로필을 업데이트해서 PHP의 실제 경로를 포함해야 합니다.예를 들면 다음과 같습니다.
export PATH=/usr/local/php5/bin:$PATH
Ubuntu
이전 버전의 Ubuntu(14.04 이전)에서 sudo apt-get install php5-mcrypt을 실행할 때 mods-available에 확장된 설치를 하지 않았습니다.너는 그것을 기호화해야 한다.
sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini
모든 Ubuntu 버전에서는 설치 후mod를 사용해야 합니다.너는 php5enmod을 사용할 수 있다.
sudo php5enmod mcrypt
sudo service apache2 restart
필기
  • PHP7.1 mcrypt, 7.2 removed the mcrypt extension entirely
  • Laravel 5.1 이상 removed the need for mcrypt

  • 3. Laravel Eloquent를 사용하여 여러 where 자문 조회를 어떻게 만듭니까?
    답변:
    Laravel 5.3(6.x에서도 마찬가지)에서 더욱 세밀한 입도의where를 수조로 전달할 수 있다.
    $query->where([
        ['column_1', '=', 'value_1'],
        ['column_2', '<>', 'value_2'],
        [COLUMN, OPERATOR, VALUE],
        ...
    ])
    
    개인적으로, 우리는 아직 여러 개의where 호출 용례를 찾지 못했지만, 사실은 당신들이 그것을 사용할 수 있다는 것입니다.
    2014년 6월부터 당신은 수조를 where으로 전달할 수 있습니다
    모든 wheresand 연산자를 사용하려면 다음과 같이 그룹화할 수 있습니다.
    $matchThese = ['field' => 'value', 'another_field' => 'another_value', ...];
    
    // if you need another group of wheres as an alternative:
    $orThose = ['yet_another_field' => 'yet_another_value', ...];
    
    다음:
    $results = User::where($matchThese)->get();
    
    // with another group
    $results = User::where($matchThese)
        ->orWhere($orThose)
        ->get();
    
    이러한 질의는 다음과 같은 결과를 낳습니다.
    SELECT * FROM users
      WHERE (field = value AND another_field = another_value AND ...)
      OR (yet_another_field = yet_another_value AND ...)
    
    대체 답안:
    검색 범위는 코드의 가독성을 향상시키는 데 도움을 줄 수 있습니다.
    http://laravel.com/docs/eloquent#query-scopes
    모델에서 다음과 같이 역할 도메인을 생성합니다.
    public function scopeActive($query)
    {
        return $query->where('active', '=', 1);
    }
    
    public function scopeThat($query)
    {
        return $query->where('that', '=', 1);
    }
    
    그런 다음 질의를 생성할 때 이 역할 영역을 호출할 수 있습니다.
    $users = User::active()->that()->get();
    

    4. Laravel Eloquent를 사용하여 마지막으로 삽입된 id를 가져오는 방법은?
    답변:
    업데이트된 Laravel 버전을 보려면 다음과 같이 하십시오.
    return response()->json(array('success' => true, 'last_insert_id' => $data->id), 200);
    
    대체 답안:DB::statement or DB::insert을 사용하는 사용자에게는 또 다른 방법이 있습니다.
    DB::getPdo()->lastInsertId();
    

    5. Laravel 5에서 Blade를 사용하여 HTML을 표시하려면 어떻게 해야 합니까?
    답변:
    너는 사용해야 한다
    {!! $text !!}
    
    {{ $text }}을 사용하면 문자열이 자동으로 이스케이프됩니다.
    대체 답안:
    라벨 5번지
    {!!html_entity_decode($text)!!}
    

    6. WHERE (a = 1 OR b =1 ) AND (c = 1 OR d = 1)은 어떻게 말합니까?
    답변:
    Parameter Grouping(Laravel 4.2)을 사용합니다.예를 들면 다음과 같습니다.
    Model::where(function ($query) {
        $query->where('a', '=', 1)
              ->orWhere('b', '=', 1);
    })->where(function ($query) {
        $query->where('c', '=', 1)
              ->orWhere('d', '=', 1);
    });
    
    대체 답안:
    Laravel 4에서 a, b, c, d 매개변수를 사용하는 경우
    Model::where(function ($query) use ($a,$b) {
        $query->where('a', '=', $a)
              ->orWhere('b', '=', $b);
    })
    ->where(function ($query) use ($c,$d) {
        $query->where('c', '=', $c)
              ->orWhere('d', '=', $d);
    });
    

    7. $result = Model::where(...)->get()에서 되돌아오는 설득력 있는 집합이 비어 있는지 확인하고 원소의 수량을 계산할 방법이 있습니까?
    답변:->get()을 사용할 때는 다음 중 하나를 간단하게 사용할 수 없습니다.
    if (empty($result)) { }
    if (!$result) { }
    if ($result) { }
    
    만약 당신이 dd($result);을 선택한다면, 결과가 없더라도 Illuminate\Support\Collection의 실례가 항상 되돌아오는 것을 발견할 수 있기 때문이다.기본적으로, 당신이 검사해야 할 것은 $a = new stdClass;입니다. 만약 ($a) { ... }이라면, 그것은 시종일관true로 되돌아갈 것입니다.
    결과 여부를 확인하려면 다음 중 하나를 수행합니다.
    if ($result->first()) { } 
    if (!$result->isEmpty()) { }
    if ($result->count()) { }
    if (count($result)) { }
    
    쿼리 생성기에서 ->first()이 아니라 ->get()을 사용할 수 있습니다. 쿼리 생성기는 첫 번째로 찾은 모델의 실례를 되돌려주거나 null을 사용합니다.만약 데이터베이스에서 결과를 얻기를 원하거나 원한다면, 이것은 매우 유용할 것입니다.
    $result = Model::where(...)->first();
    if ($result) { ... }
    
    보너스 정보
    Laravel의 초보자들에게 집합과 조회 생성기의 차이는 보통 방법명이 같기 때문에 약간 곤혹스러울 수 있다.그래서 당신이 무엇을 하고 있는지 알면 곤혹스러울 수도 있다.
    쿼리 생성기는 기본적으로 쿼리를 구축합니다. 방법을 호출할 때까지 쿼리를 실행하고 데이터베이스에 명중시킬 것입니다. (예를 들어 ->all() ->first() ->lists()과 다른 방법을 호출할 때)이러한 방법도 Collection 대상에 존재하며 여러 결과가 있으면 조회 생성기에서 되돌아올 수 있다.만약 당신이 실제로 어떤 과정을 사용하고 있는지 확실하지 않다면 var_dump(User::all())을 시도해 보고 실제로 어떤 과정을 사용했는지 시험해 보세요(get_class(...)의 도움 아래).
    Collection 클래스의 소스 코드는 매우 간단합니다.그리고 조회 생성기를 보고 함수 이름의 유사점을 보고 데이터베이스에 언제 들어갈지 찾아낸다.
  • Laravel 5.2 Collection Class
  • Laravel 5.2 Query Builder

  • 8. 어떻게 이전 중에 기존 테이블에 새 열을 추가합니까?
    답변:
    마이그레이션을 생성하려면 Artisan CLI에서 migrate:make 명령을 사용합니다.기존 모델과 충돌하지 않도록 특정 이름을 사용합니다.
    Laravel 3의 경우:
    php artisan migrate:make add_paid_to_users
    
    Laravel 5+의 경우:
    php artisan make:migration add_paid_to_users_table --table=users
    
    그리고 Schema::table() 방법을 사용해야 합니다. (새 테이블을 만들 때가 아니라 기존 테이블에 접근할 때)다음과 같이 추가할 수 있습니다.
    public function up()
    {
        Schema::table('users', function($table) {
            $table->integer('paid');
        });
    }
    
    롤백 옵션을 추가하는 것을 잊지 마십시오.
    public function down()
    {
        Schema::table('users', function($table) {
            $table->dropColumn('paid');
        });
    }
    
    그런 다음 마이그레이션을 실행할 수 있습니다.
    php artisan migrate
    
    이 문서는 Laravel 3 설명서에 자세히 설명되어 있습니다.
  • Schema Builder
  • Migrations
  • Laravel 4/Laravel 5의 경우:
  • Schema Builder
  • Migrations
  • 또한
    use $table->integer('paid')->after('whichever_column'); to add this field after a specific column.
    
    대체 답안:
    일을 더욱 빨리 하기 위해서, 당신은 이렇게 로고 '– table' 을 사용할 수 있습니다.
    php artisan make:migration add_paid_to_users --table="users"
    
    이렇게 하면 updown 메소드가 자동으로 추가됩니다.
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            //
        });
    }
    
    마찬가지로 새 마이그레이션을 작성할 때 --create["table_name"] 옵션을 사용하면 마이그레이션에 더 많은 템플릿 파일을 추가할 수 있습니다.

    9. Laravel 4에서 @if 명령(Blade)의 현재 URL을 가져오는 방법은?
    답변:
    다음과 같은 예제에서 현재 URL을 Request::url()으로 가져올 수 있습니다.
    @if(Request::url() === 'your url here')
        // code
    @endif
    
    Laravel은 URL이 패턴과 일치하는지 확인하는 방법을 제공합니다.
    if (Request::is('admin/*'))
    {
        // code
    }
    
    다른 요청 정보를 보려면 관련 문서 보기: http://laravel.com/docs/requests#request-information
    대체 답안:Route::current()->getName() 검사 노선 이름도 사용할 수 있습니다.
    예: 노선.php
    Route::get('test', ['as'=>'testing', function() {
        return View::make('test');
    }]);
    
    보기:
    @if(Route::current()->getName() == 'testing')
        Hello This is testing
    @endif
    

    10.. 어떻게 $user에 기록이 있는지 확인합니까?
    답변:
    이것은 당신이 사후에 사용자와 합작하고 싶은지, 아니면 사용자가 존재하는지만 검사하고 싶은지에 달려 있다.
    사용자 객체를 사용하는 경우(있는 경우):
    $user = User::where('email', '=', Input::get('email'))->first();
    if ($user === null) {
       // user doesn't exist
    }
    
    하면, 만약, 만약...
    if (User::where('email', '=', Input::get('email'))->count() > 0) {
       // user found
    }
    
    심지어 더 좋다
    if (User::where('email', '=', Input::get('email'))->exists()) {
       // user found
    }
    
    대체 답안:
    가장 좋은 해결 방안 중 하나는 firstOrNew 또는 firstOrCreate 방법을 사용하는 것이다.documentation은 이 두 가지 측면에 대해 더 자세한 정보를 제공합니다.

    11. Laravel에서 허용된 메모리 크기가 536870912바이트인 오류를 어떻게 복구합니까?
    답변:
    /etc/php5/fpm/php를 편집해 보십시오.이니:
    ; Old Limit
    ; memory_limit = 512M
    
    ; New Limit
    memory_limit = 2048M
    
    Nginx를 다시 시작해야 할 수도 있습니다.
    대체 답안:
    해결 방안은 php의 메모리 제한을 바꾸는 것입니다.하지만 그게 옳았을 거야.그래서 서버를 담당하는 사람이 필요합니다. 거기에 있습니다.
    /etc/php/7.0/cli/php.ini
    
    그래서 선이 필요해.
    memory_limit
    
    이후 PHP 서비스를 다시 시작해야 합니다.
    sudo service php7.0-fpm restart
    
    성공적으로 변경되었는지 확인하려면 명령줄을 사용하여 다음 명령을 실행해야 합니다.
    php -i
    
    이 보고서에는 다음이 포함됩니다.
    memory_limit => 2048M => 2048M
    
    현재 테스트 용례는 이미 다 되었다.
    요컨대
    다음은 라라빌에 관한 가장 자주 묻는 11가지.만약 어떤 건의나 곤혹스러움이 있다면 아래에서 평론해 주십시오.만약 네가 도움을 필요로 한다면, 우리는 기꺼이 너를 도울 것이다.
    저희 전화번호는 Truemark으로 인터넷과 모바일 응용 프로그램 개발, 디지털 마케팅과 사이트 개발 등 서비스를 제공합니다.따라서 도움이 필요하고 저희와 합작하기를 원하신다면 언제든지 저희에게 연락 주십시오.
    이 문장이 너에게 도움이 되었으면 좋겠다.
    이 글은 처음으로 DevPostbyTruemark에 발표되었다.

    좋은 웹페이지 즐겨찾기