【问题标题】:Laravel 5.3 Pluck vs AllLaravel 5.3 采摘与全部
【发布时间】:2017-01-26 13:12:36
【问题描述】:

我有一个问题要问

所以我试图创建一个下拉列表,它将显示另一个表中的数据。在我的控制器中,我在创建函数中声明了这些表

public function create()
{
    $tenants = Tenant::pluck('name','id');
    $categories = Category::pluck('name','id');
    return view('items.create', ['categories' => $categories, 'tenants' => $tenants]);
}

在我看来:

<div class='form-group'>
                        <label for="category_id" class="col-md-4 control-label">Item Category</label>
                        <div class="col-md-6">
                        <select class="form-control" name="category" id="categories">
                            @foreach($categories as $category)
                            {
                                <option value={{ $category->id }}>{{ $category->name }}</option>
                            }
                            @endforeach
                        </select>   
                        </div>
                    </div>

                     <div class='form-group'>
                        <label for="tenant_id" class="col-md-4 control-label">Tenant</label>

                        <div class="col-md-6">
                        <select class="form-control" name="tenant" id="tenants">
                            @foreach($tenants as $tenant)
                            {
                                <option value={{ $tenant->id }}>{{ $tenant->name }}</option>
                            }
                            @endforeach
                        </select>   
                        </div>

                        </div>

它会产生一个错误:尝试获取非对象的属性

但如果我像这里一样将 pluck 更改为 all

public function create()
{
    $tenants = Tenant::all();
    $categories = Category::all();
    return view('items.create', ['categories' => $categories, 'tenants' => $tenants]);
}

它的工作。问题是我只想获取“name”和“id”的值 并且使用 all,它还会返回我不需要的属性。我怎样才能做到这一点?如果我阅读了文档,它说 pluck 将检索给定键的所有值,但为什么我的 pluck 不起作用?我是 php 和 laravel 的新手,所以任何给定的指南都会很棒。

【问题讨论】:

    标签: php laravel drop-down-menu controller laravel-5.3


    【解决方案1】:

    当使用pluck() 时,你会得到[id =&gt; 'name'] 格式的数据,所以这样做:

    @foreach($categories as $id => $category)
        <option value={{ $id }}>{{ $category }}</option>
    @endforeach
    

    $tenants做同样的事情

    【讨论】:

    • 它工作正常!谢谢你的帮助,但现在我很困惑。如果我没记错的话,'=>' 用于为数组中的键赋值。所以如果我正确理解了你的答案,我得到的pluck() 是带有名称值的id 吗?所以不是 1 作为Id 我会得到一个name?但是当我这样做时&lt;option value={{ $id }}&gt;{{ $id }}&lt;/option&gt; 它表明id 值确实是id 而不是name。那么它是如何工作的呢?我真的需要了解
    • @ArgaAditya 是的,使用pluck(),您将获得具有[1 =&gt; 'SomeCategoryName'] 结构的类似数组的集合,其中1 是表中类别的ID。这就是pluck() 的工作原理。
    • 别在意我之前的评论,我已经重新阅读了文档,现在我明白了,谢谢你的帮助!
    猜你喜欢
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    相关资源
    最近更新 更多