Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 通过外键检索数据_Mysql_Laravel 5.3 - Fatal编程技术网

Mysql 通过外键检索数据

Mysql 通过外键检索数据,mysql,laravel-5.3,Mysql,Laravel 5.3,我的数据库中有两个表,用户和投诉 用户表: id |名称|密码 抱怨表 id |用户| id |标题|正文 用户id是一个外键。如何根据用户id从投诉表中检索标题和正文 这是我目前所拥有的,但我无法检索特定于用户id的数据 我的用户模型: <?php namespace App; use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable; class

我的数据库中有两个表,用户和投诉

用户表:

id |名称|密码

抱怨表

id |用户| id |标题|正文

用户id是一个外键。如何根据用户id从投诉表中检索标题和正文

这是我目前所拥有的,但我无法检索特定于用户id的数据

我的用户模型:

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'surname', 'regnumber', 'course', 'department', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];
}

您需要设置一对多关系,如下所述:

一旦你有了正确的方法,当你做类似于
$user->complaints
的事情时,Eloquent就会找到关系

class User extends Model
{
    /**
     * Get the complains for the User.
     */
    public function complains()
    {
        return $this->hasMany('App\Complain');
    }
}

class Complain extends Model
{
    /**
     * Get the User for the Complain.
     */
    public function user()
    {
        return $this->belongsTo('App\User');
    }
}

这是我的用户表迁移:

<?php

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

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

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

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

class CreateComplainsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('complains', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->text('body');
            $table->timestamps();
        });
    }

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

我的用户模型不扩展模型,它扩展了Authenticatable。如果我添加关系,逻辑会工作吗?illumb\Foundation\Auth\User extends Model。我已经分别在我的投诉模型和用户模型中创建了关系。在我的控制器中,我有:$complain=complain::find($id);返回视图('user.profile')->带有投诉($contrim);但在我看来,我得到了这个错误:为foreach()提供的参数无效这是我的视图:@foreach($complaints as$complaints){{{{$complaints->title}}@endforeachChange:return view('user.profile')->withcomplainty($complaints);返回视图('user.profile')->带有(['complains'=>$complains]);您缺少向用户投诉的外键关系。使用户id未签名,并在其右下方添加:$foreign->('user_id')->references('id')->('users');我应该加上:$foreign->('user_id')->references('id')->('users');在我的迁移文件中?在下面的行中是:$table->integer('user_id')->after('id')->nullable();它抛出了一个解析错误:PHP解析错误:语法错误,意外的“(”,期望标识符(T_字符串)或变量(T_变量)或“{”或“$”inC:\xampp\htdocs\SCS\database\migrations\2017_06_08_175638_将_foreign_key_添加到_complains.PHP第18行$table->foreign('user_id')->references('id')->on('users');
<?php

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

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

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

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

class CreateComplainsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('complains', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->text('body');
            $table->timestamps();
        });
    }

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

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

class AddForeignKeyToComplains extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('complains', function (Blueprint $table) {
            $table->integer('user_id')->after('id')->nullable();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('complains', function (Blueprint $table) {
            $table->dropColumn('user_id');
        });
    }
}