Попытка получить свойство необъекта при попытке выбрать значение из результата - PullRequest
0 голосов
/ 18 марта 2020

У меня проблема с функцией. Я делаю запрос на выбор из базы данных, выбор нормальный, и есть второй код, который должен взять значение столбца price из результата, но проблема в том, что я получаю ошибку в результате: Trying to get property of non-object.

Мой код:

$betitem = \DB::table('items')->where('status', 0)->where('price', '>=', 10)->orderByRaw('RAND()')->take(1)->get();
$green_tickets = $betitem->price;

Если напишите var_dump($betitem[0]); exit; я получил:

object(stdClass)#584 (13) { ["id"]=> int(548) ["assetid"]=> string(11) "18235855849" ["market_hash_name"]=> string(15) "Staff of Gun-Yu" ["classid"]=> string(231) "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KW1Zwwo4NUX4oFJZEHLbXK9QlSPcU_phVWSVXvTO2j0IDeXFN_IB1ovbOrLDhp3v7HYylD4OOhkYGbmPm7PrTfnW5I1854hO7-_IH4h0agqh8DJDyiZNnLbAE8M13Q-Ae4wrq7g5Pq7cufnCRm7nZ3tCyPlhSyhx1IabZrjPKaQVqAR_se2_6rU3g" ["price"]=> float(26.4) ["steamid"]=> string(1) "1" ["type"]=> string(4) "card" ["bot"]=> string(1) "1" ["status"]=> int(0) ["created_at"]=> string(19) "2020-02-27 01:47:12" ["updated_at"]=> string(19) "2020-03-14 17:41:25" ["is_withdraw"]=> int(0) ["is_raffling"]=> int(0) }

Как я понимаю, проблема возникает, потому что результат получен в массив. Но тогда как исправить эту ошибку и получить результат из столбца price?

Ответы [ 4 ]

1 голос
/ 18 марта 2020

Так как $betitem имеет объект внутри массива, вы можете сделать

$green_tickets = $betitem[0]->price;

Или вы можете использовать метод first(), чтобы получить первую строку, соответствующую вашим условиям.

$betitem = \DB::table('items')->where('status', 0)->where('price', '>=', 10)->orderByRaw('RAND()')->take(1)->first();

$green_tickets = $betitem->price;

Кроме того, я могу видеть дополнительные \ до DB. Вы можете добавить use DB; перед объявлением вашего класса, и все должно работать нормально. Убедитесь, что этот псевдоним DB существует в вашем config/ app.php.

0 голосов
/ 18 марта 2020

использование first()

$betitem = \DB::table('items')
            ->where('status', 0)
            ->where('price', '>=', 10)
            ->orderByRaw('RAND()')
            ->take(1)
            ->first();
$green_tickets = $betitem->price;
0 голосов
/ 18 марта 2020

В этом случае используйте first () вместо take (1) -> get ()

$betitem = \DB::table('items')->where('status', 0)->where('price', '>=', 10)->orderByRaw('RAND()')->first();
$green_tickets = $betitem->price;
0 голосов
/ 18 марта 2020

попробуйте

$betitem  = items::where('status',0)->andWhere('price', '>=', 10)->orderBy('id', 'ASC')->take(1)->get(); 
$green_tickets = $betitem->price;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...