在 Laravel 中调用未定义的函数 App\Http\Controllers\categories()
Call to undefined function App\Http\Controllers\categories() in Laravel
我需要帮助,我正在 Laravel 中进行一个项目,当 T 尝试在多对多
中使用枢轴 table 时遇到问题
在我的category model
Category.php
中,我有下面的函数
public function users()
{
return $this->belongsToMany(user::class);
}
在我的user model
User.php
中,我有下面的函数
public function authors()
{
return $this->belongsToMany(author::class);
}
在web.php
,我有这个
Route::post('/onboarding', 'OnboardsController@categoryUser');
在我的 onboarding view
中,我有一个表格:
<form action="{{ url('/onboarding') }}" method="POST">
@csrf
@foreach($categories as $category)
<div class="radio-item">
<input class="form control" name="category_id" type="checkbox" id="category_id" required>
<label for="name">{{ $category -> title }}</label>
</div>
@endforeach
<div class="form-row">
<div class="form-group col-md-12 text-center">
<button type="submit">Proceed to Authors</button>
</div>
</div>
</form>
在我的OnboardsController
我有这个
public function categoryUser (Request $request)
{
$user = User::findOrFail(Auth::user()->id);
$user = categories()->attach($request->input('category_id'));
return redirect ( route ('onboarding_author'));
}
这是返回的错误:
Call to undefined function App\Http\Controllers\categories()
当我将控制器中的代码更改为
$category = Category::find($request->input('category_id'));
$user = User::where('user_id', Auth::id());
$category->users()->attach($user->id);
这是返回的错误:
Call to undefined function App\Http\Controllers\users()
这是我的完整 OnboardsController.php
代码
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use App\Author;
use App\User;
use App\Category;
class OnboardsController extends Controller
{
public function index()
{
//
return view('onboarding')
->with('categories', Category::all());
}
public function author()
{
//
return view('onboarding_author')
->with('authors', Author::all());
}
public function categoryUser (Request $request)
{
dd(request('category_id'));
Category::findOrFail(request('category_id'))
->users()
->attach(auth()->user()->id);
return redirect ( route ('onboarding_author'));
}
拜托,我是 Laravel 的新手,我已经用了 3 天了,我不知道如何解决这个问题。我需要帮助。
您的问题就在这里:
$user = User::findOrFail( Auth::user()->id );
$user = categories()->attach($request->input('category_id'));
^^^^^^
您正在...调用方法 categories() 什么?什么都没有。我假设您想在 User.php
模型中调用 categories()
方法。所以尝试像这样更新您的代码:
$user = User::findOrFail( Auth::user()->id );
$user->categories()->attach($request->input('category_id'));
^^^^^
这样,您将关联两个对象。
旁注
正如我提到的,我假设您的 User
模型中有 categories
方法:
# User.php
public function categories()
{
return $this->belongsToMany(Category::class);
}
记住模型应该大写。
此外,您可以改进直接从 Auth facade 获取用户的代码
这个:
$user = User::findOrFail(Auth::user()->id);
相当于:
$user = Auth::user();
您可以通过以下方式实现:
public function categoryUser()
{
Category::findOrFail(request('category_id'))
->users()
->attach(auth()->user()->id);
return redirect(route('onboarding_author'));
}
在这里,您通过请求的 category_id
获取 Category
,并附加登录用户(使用 auth()
帮助程序获取用户的 id
)。
我需要帮助,我正在 Laravel 中进行一个项目,当 T 尝试在多对多
中使用枢轴 table 时遇到问题在我的category model
Category.php
中,我有下面的函数
public function users()
{
return $this->belongsToMany(user::class);
}
在我的user model
User.php
中,我有下面的函数
public function authors()
{
return $this->belongsToMany(author::class);
}
在web.php
,我有这个
Route::post('/onboarding', 'OnboardsController@categoryUser');
在我的 onboarding view
中,我有一个表格:
<form action="{{ url('/onboarding') }}" method="POST">
@csrf
@foreach($categories as $category)
<div class="radio-item">
<input class="form control" name="category_id" type="checkbox" id="category_id" required>
<label for="name">{{ $category -> title }}</label>
</div>
@endforeach
<div class="form-row">
<div class="form-group col-md-12 text-center">
<button type="submit">Proceed to Authors</button>
</div>
</div>
</form>
在我的OnboardsController
我有这个
public function categoryUser (Request $request)
{
$user = User::findOrFail(Auth::user()->id);
$user = categories()->attach($request->input('category_id'));
return redirect ( route ('onboarding_author'));
}
这是返回的错误:
Call to undefined function App\Http\Controllers\categories()
当我将控制器中的代码更改为
$category = Category::find($request->input('category_id'));
$user = User::where('user_id', Auth::id());
$category->users()->attach($user->id);
这是返回的错误:
Call to undefined function App\Http\Controllers\users()
这是我的完整 OnboardsController.php
代码
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use App\Author;
use App\User;
use App\Category;
class OnboardsController extends Controller
{
public function index()
{
//
return view('onboarding')
->with('categories', Category::all());
}
public function author()
{
//
return view('onboarding_author')
->with('authors', Author::all());
}
public function categoryUser (Request $request)
{
dd(request('category_id'));
Category::findOrFail(request('category_id'))
->users()
->attach(auth()->user()->id);
return redirect ( route ('onboarding_author'));
}
拜托,我是 Laravel 的新手,我已经用了 3 天了,我不知道如何解决这个问题。我需要帮助。
您的问题就在这里:
$user = User::findOrFail( Auth::user()->id );
$user = categories()->attach($request->input('category_id'));
^^^^^^
您正在...调用方法 categories() 什么?什么都没有。我假设您想在 User.php
模型中调用 categories()
方法。所以尝试像这样更新您的代码:
$user = User::findOrFail( Auth::user()->id );
$user->categories()->attach($request->input('category_id'));
^^^^^
这样,您将关联两个对象。
旁注
正如我提到的,我假设您的 User
模型中有 categories
方法:
# User.php
public function categories()
{
return $this->belongsToMany(Category::class);
}
记住模型应该大写。
此外,您可以改进直接从 Auth facade 获取用户的代码
这个:
$user = User::findOrFail(Auth::user()->id);
相当于:
$user = Auth::user();
您可以通过以下方式实现:
public function categoryUser()
{
Category::findOrFail(request('category_id'))
->users()
->attach(auth()->user()->id);
return redirect(route('onboarding_author'));
}
在这里,您通过请求的 category_id
获取 Category
,并附加登录用户(使用 auth()
帮助程序获取用户的 id
)。