Php 如何在laravel中将模型函数调用到我的控制器中
我在App文件夹中有一个名为Models的model文件夹,在这个文件夹中我创建了一个UserModel,我的控制器位于App/Http/controller文件夹名UserController中。如何将我的UserModel调用到UserController中 我试过下面的代码 我的控制器UserController.php:它位于App/Http/Controller文件夹中Php 如何在laravel中将模型函数调用到我的控制器中,php,laravel,laravel-5,Php,Laravel,Laravel 5,我在App文件夹中有一个名为Models的model文件夹,在这个文件夹中我创建了一个UserModel,我的控制器位于App/Http/controller文件夹名UserController中。如何将我的UserModel调用到UserController中 我试过下面的代码 我的控制器UserController.php:它位于App/Http/Controller文件夹中 <?php namespace App\Http\Controllers; use Illumi
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use App\User;
use App\Models;
class UsersController extends Controller {
public function __construct(){
$users = new UserModel();
}
public function index(){
$user_id = $_GET['id'];
$token = $_GET['token'];
$userInfo = $this->users->getUserInformation($user_id);
return view('profile.users')->with('user_details', $userInfo);
}
}
因为
$this->users
正在返回一个集合,所以您必须循环它,然后在其中调用您的模型函数
foreach($this->users as $user){
$userInfo = $user->getUserInformation($user_id);
}
///
你做得对,只是小小的调整,你就可以开始了: 控制器中的
$users
变量必须正确声明为可供所有方法访问,因此请将控制器更新为:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use App\User;
use App\Models\UserModel;
class UsersController extends Controller {
protected $users;
public function __construct(){
$this->users = new UserModel();
}
public function index(){
$user_id = $_GET['id'];
$token = $_GET['token'];
$userInfo = $this->users->getUserInformation($user_id);
return view('profile.users')->with('user_details', $userInfo);
}
}
我认为最好的方法是利用Laravel的依赖注入,将依赖直接注入控制器方法:
class UsersController extends Controller {
public function index(UserModel $users, Request $request){
//Using the request object is recommended
$user_id = $request->input('id');
$token = $request->input('token');
$userInfo = $users->getUserInformation($user_id);
return view('profile.users')->with('user_details', $userInfo);
}
}
你应该认真阅读文档,让你的风格更像拉威尔
控制器:
视图:
用户id为:{{$User->id}
如果您愿意这样做
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class UserModel extends Model
{
public function getUserInformation(){
return "User id is : ".$this->id;
}
}
?>
内部控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use App\UserModel;
use App\Models;
class UsersController extends Controller {
public function index(){
$user_id = $_GET['id'];
$token = $_GET['token'];
$user = UserModel::find($user_id);
$userInfo = $user->getUserInformation();
return view('profile.users')->with('user_details', $userInfo);
}
}
您包括App\User,但使用的是usermodel您是如何调用您的用户模型的?用户还是用户模型?您是否尝试过这个UserModel::getUserInformation($id)代码>?请使用App\Models\UserModel代码>您是否已修复此问题?是的,我已修复,方法是将模型文件移动到应用程序根文件夹。
Route::get('users/{user}', 'UsersController@show');
<span>User id is : {{ $user->id }}</span>
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class UserModel extends Model
{
public function getUserInformation(){
return "User id is : ".$this->id;
}
}
?>
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use App\UserModel;
use App\Models;
class UsersController extends Controller {
public function index(){
$user_id = $_GET['id'];
$token = $_GET['token'];
$user = UserModel::find($user_id);
$userInfo = $user->getUserInformation();
return view('profile.users')->with('user_details', $userInfo);
}
}