DB :: table () метод не найден, laravel - PullRequest
0 голосов
/ 05 мая 2018

Я исследовал сеть, но не смог найти решение своей проблемы.

Я не могу получить элемент из своей базы данных.

   <?php

namespace App;
use Illuminate\Support\Facades\DB;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Auth;
class Wishlist extends Model
{
    public $table = 'wishlist';
    public $fillable = ['book_id','user_id',];

    public function books() //one-to-many
    {
        return $this->hasMany('App\Book');
    }

    public function user()
    {
        return $this->belongsTo('App\User');
    }
    public static function myWishlist()   
    {
        $id = Auth::id();
        $wishlist = DB::table('users')->where('id', $id)->pluck('wishlist_id');
        $wishlist_id = User::where('id', $id)->pluck('wishlist_id'); 
        return Book::where('wishlist_id', $wishlist_id);
    }
}

Если я укажу «hard»: 'return Book :: where (' whishlist_id ', 1);' это показывает это правильно. Но ни 'wishlist', ни 'wishlist_id' не показывают это.

Я был бы очень рад получить помощь!

1 Ответ

0 голосов
/ 05 мая 2018

Как указано в документации о методе срывания .

Метод pluck извлекает все значения для данного ключа

метод pluck вернет array всех значений, сорванных.

Это значит

User::where('id', $id)->pluck('wishlist_id'); 

Вернет массив, содержащий 1 элемент, который является желаемым wishlist_id

Правильный синтаксис будет выглядеть примерно так:

User::where('id', $id)->pluck('wishlist_id')[0];

Предполагая, что у пользователя всегда есть wishlist_id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...