php - 如何检查 Eloquent 关系

标签 php mysql laravel eloquent relationship

因此,我需要检查用户模型中是否存在现有关系,并制作 if 语句以向具有公司关系的用户提供路由访问权限。

用户.php

public function company(){
    return $this->belongsTo('App\Company', 'user_id');
}

公司.php

public function user(){
    return $this->hasMany('App\User') ;
}

ListingController.php

public function create(User $user){
    if(count($user->company) > 0){
    return view('listings.create');
    } else{
    return redirect()->back();
    }
}

导航 View

@inject('user', 'App\User')
    @if(count($user->company) > 0)
      <li><a href="{{route('listings.create', [$area])}}">Add Listing</a></li>
    @endif

在 web.php 中列出路由

Route::group(['prefix' => '/listing', 'namespace' => 'Listing'], function (){
//        Route::get('/me', 'ListingController@userListingsView')->name('listings.index');
        Route::get('/favourites', 'ListingFavoriteController@index')->name('listings.favourites.index');
        Route::post('/{listing}/favourites', 'ListingFavoriteController@store')->name('listings.favourites.store');
        Route::delete('/{listing}/favourites', 'ListingFavoriteController@destroy')->name('listings.favourites.destroy');
        Route::post('{listing}/contact', 'ListingContactController@store')->name('listings.contact.store');

        Route::get('{listing}/share', 'ListingShareController@index')->name('listings.share.index');
        Route::post('{listing}/share', 'ListingShareController@store')->name('listings.share.store');

        Route::group(['middleware' => 'auth'], function (){
            Route::get('/create', 'ListingController@create')->name('listings.create');
            Route::post('/', 'ListingController@store')->name('listings.store');
            Route::get('{listing}/edit', 'ListingController@edit')->name('listings.edit');
            Route::patch('{listing}', 'ListingController@update')->name('listings.update');
        });

    });

URL::project.dev/{area}/listing/create

现在我不确定用户之间的公司关系是否正确,当我使用具有公司关系的用户登录时,它仍然会将我重定向回来,而不是创建列表路由。

最佳答案

尝试空函数而不是计数

public function create(User $user) {
    if (!empty($user->company)) {
        return view('listings.create');
    } else {
        return redirect()->back();
    }
}

更新路线(创建线路)至

Route::get('{user}/create', 'ListingController@create')->name('listings.create');

然后在您的网址中添加用户 ID

URL :: project.dev/{area}/listing/{user}/create

导航 View

@inject('user', 'App\User')
    @if(count($user->company) > 0)
      <li><a href="{{route('listings.create', [$area, $user->id])}}">Add Listing</a></li>
    @endif

关于php - 如何检查 Eloquent 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43952639/

相关文章:

laravel [InvalidArgumentException] 脚本 "post-install-cmd"未在此包中定义

php - 需要 ext-fileinfo。如何将其添加到我的 composer.json 文件中?

php - 如何在mysql中存储注册和 guest session 登录

php - 在 Laravel 中添加外键约束时出错 - 按正确顺序迁移

php - mysql 从一列中读取多个值

PHP - 在循环的帮助下从表单插入mysql数据库,可能吗?

mysql - 外键的 `Constraint Symbol` 和 `index_name` 之间的区别

mysql - 查询 "the number of row"

php - Laravel 5.1 - 获取当前路线

php - 使用 PHP 提取服务器时间并存储在 MySQL 中 - Unix 时间戳好吗?