Php 无法获取身份验证::用户->;拉威尔的身份证
这是我的控制器Php 无法获取身份验证::用户->;拉威尔的身份证,php,laravel,laravel-5.2,Php,Laravel,Laravel 5.2,这是我的控制器 <?php /** * Created by PhpStorm. * User: ed * Date: 05/02/16 * Time: 09:33 */ namespace App\Http\Controllers\API\V1; use App\Certificate; use App\Country; use App\Film; use App\FilmExtra; use App\FilmFavourite; use App\FilmGenre; us
<?php
/**
* Created by PhpStorm.
* User: ed
* Date: 05/02/16
* Time: 09:33
*/
namespace App\Http\Controllers\API\V1;
use App\Certificate;
use App\Country;
use App\Film;
use App\FilmExtra;
use App\FilmFavourite;
use App\FilmGenre;
use App\FilmLike;
use App\FilmView;
use App\Genre;
use App\Language;
use App\Magazine;
use App\News;
use App\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Input;
class MagazineController extends ApiController
{
public function viewAll(){
echo Auth::user()->id;
exit;
$user_id = Input::get('user_id');
$magazines = Magazine::paginate(5);
return parent::api_response($magazines->toArray(), true, ['return' => 'all magazines'], 200);
}
public function getMagazine($id){
$magazine = Magazine::find($id);
if($magazine){
return parent::api_response($magazine->toArray(), true, ['return' => 'magazine details'], 200);
}else{
return parent::api_response([], false, ['error' => 'Couldn\'t find that magazine'], 404);
}
}
protected function getURL($id){
$magazine = Magazine::find($id);
if($magazine){
return parent::api_response(['url' => $magazine->file_url], true, ['return' => 'magazine url'], 200);
}else{
return parent::api_response([], false, ['error' => 'Couldn\'t find that magazine'], 404);
}
}
public function search($term){
$magazines = Magazine::search($term)->paginate(5);
return parent::api_response($magazines, true, ['return' => 'search for '.$term], 200);
}
public function purchased(){
$magazines = Magazine::leftJoin('ordered_items', 'ordered_items.item_id', '=', 'magazines.id')
->leftJoin('orders', 'orders.id', '=', 'ordered_items.order_id')
->leftJoin('items', 'items.id', '=', 'ordered_items.item_id')
->where('orders.user_id', $user_id)
->where('items.class', 'book');
if(Input::get('filter')) {
$jsonFilter = Input::get('filter');
$filters = json_decode($jsonFilter);
foreach ($filters as $filter => $value){
switch ($filter){
case "genre":
if($value){
$magazines = $magazines->whereHas('genre', function ($query) use($value) {
$query->whereIn('genre_id', $value);
});
}
break;
case "cert":
if($value){
$magazines = $magazines->whereIn('cert', $value);
}
break;
case "country":
if($value){
$magazines = $magazines->whereIn('country', $value);
}
break;
case "lang":
if($value){
$magazines = $magazines->whereHas('languages', function ($query) use($value) {
$query->whereIn('language_id', $value);
});
}
break;
}
}
}
$magazines = $magazines->paginate(5);
return parent::api_response($magazines->toArray(), true, ['return' => 'all magazines'], 200);
}
}
可能是Auth::user
返回null
,您正试图获取null的id
因此,请确保用户以如下方式登录:
if (Auth::check()) {
// The user is logged in...
echo Auth::user()->id;
}
ApiController做什么
将顶部的命名空间更改为
namespace App\Http\Controllers;
尝试用普通的控制器更改ApiController
,并检查将发生什么
而不是:
class MagazineController extends ApiController
这样改变它:
class MagazineController extends Controller
确保此控制器的路由包装在web
中间件组中
另外,由于MagazineController
扩展了ApiController
,因此请确保ApiController
扩展了控制器像这样使用Laravel 5.2方式
$user_collection = Auth::user();
echo $user_collection->id;
exit;
您是否更改了users表的id名称?我经历过。我把我所有的钱都记下来了。我使用的是Linux和db,表和列名区分大小写。尝试检查用户表的id列
也就是说,如果您确定用户已登录。否则,如果我没有弄错的话,它将是空的。将您的控制器置于登录中间件下,以确保您有一个已登录的用户,或者只需在访问用户id之前进行验证:
if(Auth::check()){
$id=Auth::user()->id;
}
你不能得到它是什么意思?这是一个错误吗?还是什么都没有显示?@Samsquanch-yeah抛出一个错误。在MagazineController.php第54行中出现ErrorException:尝试获取非对象$user=Auth::user()的属性;echo$user->id;退出@德文格雷,刚刚试过,同样的错误。我想知道它是否仅在此控制器上工作。请尝试以下操作:if(Auth::check()){echo“test”;exit;}
--如果您未获得“test”,则您未获得授权。类“App\Http\Controllers\API\V1\controller”未找到其完成。老兄,谢谢你们的快速反应。这是我的荣幸,兄弟。如果我的答案帮助你选择它作为公认的答案,问题是其他的,但我的代码结构只是这样。你能过来skype帮我吗?我检查了所有的东西。一切似乎都是这样的。我仍然不知道为什么它不起作用你能用skype上网吗?