非常に基本的な問題があります。以下のL4 thesでは、メソッドはそのまま使用できたので、今は迷っています。助けてください。数日前、Laravel 5.0プロジェクトを開始しました。これで、新鮮でクリーンなインストールができました。
問題1:データベースから何かを取得しようとすると
$headquote = DB::table('quotation_texts')->find(176);
私はこれを得る:
Class 'App\Http\Controllers\DB' not found
問題2:User.phpモデルを複製する前に、クラス名を「Quotation」に変更しました。以下は、アプリのルートフォルダに置かれたファイルQuotations.phpの内容です。
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Quotation extends Model {
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'quotation_texts';
}
モデルを使用する試み
$headquote = Quotation::find(176);
これで終わる:
Class 'App\Http\Controllers\Quotation' not found
問題を解決する方法はありますか?
ここでの問題は、PHP名前空間です。それらを使用する方法を学ぶ必要があります。コントローラーはApp\Http\Controllers
名前空間にあるため、他のクラスを参照する場合は、先頭のバックスラッシュ(または適切な名前空間)を追加するか、ファイルの先頭(クラス定義の前)にuse
ステートメントを追加する必要があります。
したがって、あなたの場合には次を使用できます:
$headquote = \DB::table('quotation_texts')->find(176);
$headquote = \App\Quotation::find(176);
または、コントローラクラスuse
ステートメントを追加して、コントローラクラスの先頭が次のようになるようにします。
<?php
namespace App\Http\Controllers;
use DB;
use App\Quotation;
名前空間の詳細については、 PHPで他の名前空間のオブジェクトを使用する方法と名前空間をインポートする方法 または PHP manualの名前空間 を参照してください。
早くて汚い
use DB;
OR
\DB::table...
コントローラーのこの上部を追加するだけです。
use DB;
このようにしてみてください:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
class UserController extends Controller
{
function index(){
$users = DB::table('users')->get();
foreach ($users as $user)
{
var_dump($user->name);
}
}
}
?>
ヘッダーのdbの前にバックスラッシュを使用すると、通常は前に書いたとおりに使用できます。
以下に例を示します。
Use \DB;
次に、コントローラークラス内で、以前と同じように、つまりそのように使用できます。
$item = DB::table('items')->get();
laravel 5.2.3のように名前の間隔に問題があります
use DB;
use App\ApiModel; OR use App\name of model;
DB::table('tbl_users')->insert($users);
OR
DB::table('table name')->insert($users);
model
class ApiModel extends Model
{
protected $table='tbl_users';
}