Я заново учусь Laravel с laravel 7 и обнаружил проблему, при которой я не могу запросить запись в моей таблице базы данных. Таким образом, вместо вызова типа $test = Test::find_by_id_and_name(1, 'test 1');
(а также $test = Test::where('id', 1);
, возвращающего класс Illuninate \ Database \ Eloquent \ Model, он возвращает класс Illuminate \ Database \ Eloquent \ Builder.
Я создал миграцию для таблицы под названием «Тесты» и засеял ее несколькими строками тестовых данных. Тестовая модель в приложении выглядит следующим образом:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Test extends Model
{
protected $guarded = [];
use SoftDeletes;
}
Миграция:
se Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateTestsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('tests', function (Blueprint $table) {
$table->id();
$table->string( 'name' );
$table->string( 'url', 255 );
$table->timestamps();
$table->softDeletes();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('tests');
}
}
Так что кто угодно почему я не получаю нужную мне модель, поэтому я могу сделать, например, dd($test);
и увидеть значения, хранящиеся в базе данных для строки с идентификатором 1? или даже сделать echo($test->name);
и увидеть имя этого item?
спасибо
* ДОПОЛНИТЕЛЬНОЕ * Следует отметить, что мой исходный код имел Test :: find_by_id_and_name (1, 'test 1'); но этого не произошло работают и генерируют исключение о поиске класса. Я изменил if with where и выше был опечаткой, как и where ('id', 1); (Я исправил код, используя свой исходный код find_by). Добавление get ( ) или что-то другое теперь возвращает null. Я проверил, что dat abase содержит тесты таблицы и что элемент с идентификатором и именем 'test 1' существует
* РЕЗУЛЬТАТ * Основной проблемой в конечном итоге были данные, URL-адрес имел https: : // в нем (дополнительное двоеточие), поэтому он действительно вернет null. Спасибо, ребята, помогли мне найти причину.