У меня проблемы при использовании vsprintf
вместо sprintf
для форматирования строки запроса, которую я передаю DB::select
. Я сузил проблему путем устранения. Сначала я попытался использовать sprintf
для вставки переменной в строку. Я использовал эту строку в качестве параметра для DB::select
:
$query = sprintf("SELECT * FROM test_posts WHERE post_slug = %s;", $post_slug);
$result = DB::select($query);
dd($result);
Результат был в порядке. Я изменил код, чтобы разрешить вставку нескольких переменных в строку:
$table = 'test_posts';
$column = 'post_slug';
$query = vsprintf("SELECT * FROM %s WHERE %s = '%s';", [$table, $column, $identifier_slug]);
$rslt_post = DB::select($query);
//return view('post_viewer', ['arr_post' => $rslt_post] );
echo "<pre>";
print_r($rslt_post);
dd($rslt_post);
Результат был точным и одинаковым для обоих вариантов кода:
Array
(
[0] => stdClass Object
(
[post_ctr] => 2
[post_slug] => my-first-post
[posted_by] => J_Rives
[date_posted] => 2020-02-03 09:03
[last_edit] => 2020-02-03 16:54
[post_body] => Test post #2. Ctr = 2, No title.
)
)
array:1 [▼
0 => {#250 ▶}
]
Я попытался вернуть представление с Объект результата передается в качестве параметра.
return view('post_viewer', ['arr_post' => $rslt_post] );
В результате появилось следующее сообщение об ошибке:
Facade\Ignition\Exceptions\ViewException
Trying to get property 'posted_by' of non-object (View: C:\Users\7\testproject1.0\resources\views\post_viewer.blade.php)
http://127.0.0.1:8000/posts/my-first-post
Ссылочная строка в post_viewer.blade.php
выглядит следующим образом:
<h4> {{ $arr_post->posted_by }} </h4>
.
Почему он утверждает, что переменная, проверенная dd
и print_r
как объект массива, является "необъектом", из которого я попытался получить доступ к "свойству", называемому "title"? *