Не могу получить данные из базы данных - Laravel - PullRequest
0 голосов
/ 03 мая 2018

У меня есть очень простой и короткий код более или менее непосредственно из курса, но он не работает. Я получаю сообщение об ошибке, которого раньше никто не видел, потому что не могу найти ни одной веб-страницы, где упоминается моя точная ошибка.

Я просто пытаюсь получить данные из моей (sql) базы данных в контроллере с Laravel. Контроллер:

 <?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Joke as Joke;


class ContentsController extends Controller
{

public function __construct( Joke $joke )
{
    $this->joke = $joke;
}
//
public function index()
{
    $data = [];
    $data = ['jokes'] = $this->joke->all();


    return view('index', $data);
}
}

Миграция БД:

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateJokesTable extends Migration
{
/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::create('jokes', function (Blueprint $table) {
        $table->increments('id');
        $table->string('joke');
        $table->integer('upvotes');
        $table->integer('downvotes');
        $table->integer('user_id')->unsigned();
        $table->foreign('user_id')->references('id')->on('users');
    });
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::dropIfExists('jokes');
}
}

Когда я пытаюсь запустить его, я получаю эту ошибку: «Назначения могут произойти только с записываемыми значениями», и это точно в строке с $data = ['jokes'] = $this->joke->all();

Я полностью потерян.

1 Ответ

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

То, что вы делаете, пытается присвоить результат $this->jokes->all(), ['jokes'], который не является переменной, а также $data, который:

$data = ['jokes'] = $this->joke->all();

Вы не можете сделать это на PHP (или на любом другом языке программирования, насколько мне известно). Это все равно что пытаться сделать что-то вроде 1 = 'this is not number 1';. PHP жалуется на это.

У меня такое ощущение, что вы только что добавили дополнительный =, где его не должно быть, и ваш код должен выглядеть следующим образом:

$data['jokes'] = $this->joke->all();

Это присваивает $this->joke->all() элементу массива с ключом jokes, что, вероятно, то, что вам нужно.

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