Php 我的数据库不是';t接受';名称';所有物

Php 我的数据库不是';t接受';名称';所有物,php,laravel,controller,Php,Laravel,Controller,我正试图通过我的控制器在我的“朋友”中输入“姓名” 我已经制作了一个“名称”表,其中包含名称 我不断收到“试图获取非对象的属性“name”此错误 这是我的朋友控制器:- <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Friend; use Illuminate\Support\Facades\Auth; use App\Name; class FriendsController e

我正试图通过我的控制器在我的“朋友”中输入“姓名”
我已经制作了一个“名称”表,其中包含名称
我不断收到“试图获取非对象的属性“name”此错误

这是我的朋友控制器:-

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Friend;
use Illuminate\Support\Facades\Auth;
use App\Name;

class FriendsController extends Controller
{
    public function store(Request $request)
    {   

        $name = Name::all()->random(1)[0]->name;


        Friend::create([
            'my_id'=>Auth::user()->id,
            'friends_id'=>$request->friends_id,
            'name' => $name->name,
        ]);

        Friend::create([
            'friends_id'=>Auth::user()->id,
            'my_id'=>$request->friends_id,
            'name' => $name->name,
        ]);

        return redirect('/home');
    }
}
public function up()
{
    Schema::create('friends', function (Blueprint $table) {
        $table->id();
        $table->string('my_id');
        $table->string('friends_id');
        $table->string('name')->nullable();     
        $table->timestamps();
    });
}
public function up()
{
    Schema::create('names', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->timestamps();
    });
}
  public function store(Request $request)
{   

    $name = Name::inRandomOrder()->first()->name;


    Friend::create([
    'my_id'=>Auth::user()->id,
    'friends_id'=>$request->friends_id,
    'name' => $name,
]);

    Friend::create([
    'friends_id'=>Auth::user()->id,
    'my_id'=>$request->friends_id,
    'name' => $name,
]);

     return redirect('/home');
}
}
这是我的姓名表:-

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Friend;
use Illuminate\Support\Facades\Auth;
use App\Name;

class FriendsController extends Controller
{
    public function store(Request $request)
    {   

        $name = Name::all()->random(1)[0]->name;


        Friend::create([
            'my_id'=>Auth::user()->id,
            'friends_id'=>$request->friends_id,
            'name' => $name->name,
        ]);

        Friend::create([
            'friends_id'=>Auth::user()->id,
            'my_id'=>$request->friends_id,
            'name' => $name->name,
        ]);

        return redirect('/home');
    }
}
public function up()
{
    Schema::create('friends', function (Blueprint $table) {
        $table->id();
        $table->string('my_id');
        $table->string('friends_id');
        $table->string('name')->nullable();     
        $table->timestamps();
    });
}
public function up()
{
    Schema::create('names', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->timestamps();
    });
}
  public function store(Request $request)
{   

    $name = Name::inRandomOrder()->first()->name;


    Friend::create([
    'my_id'=>Auth::user()->id,
    'friends_id'=>$request->friends_id,
    'name' => $name,
]);

    Friend::create([
    'friends_id'=>Auth::user()->id,
    'my_id'=>$request->friends_id,
    'name' => $name,
]);

     return redirect('/home');
}
}

有人能帮我吗?

'name'=>$name
应该是蒂姆提到的正确的。如果未将其保存到数据库中,可能是因为模型中保护了
name


尝试添加
protected$guarded=['id']
受保护的$filleble=['name']并查看是否有效。要了解更多信息,您可以查看laravel的。干杯:)

这是解决方案:-

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Friend;
use Illuminate\Support\Facades\Auth;
use App\Name;

class FriendsController extends Controller
{
    public function store(Request $request)
    {   

        $name = Name::all()->random(1)[0]->name;


        Friend::create([
            'my_id'=>Auth::user()->id,
            'friends_id'=>$request->friends_id,
            'name' => $name->name,
        ]);

        Friend::create([
            'friends_id'=>Auth::user()->id,
            'my_id'=>$request->friends_id,
            'name' => $name->name,
        ]);

        return redirect('/home');
    }
}
public function up()
{
    Schema::create('friends', function (Blueprint $table) {
        $table->id();
        $table->string('my_id');
        $table->string('friends_id');
        $table->string('name')->nullable();     
        $table->timestamps();
    });
}
public function up()
{
    Schema::create('names', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->timestamps();
    });
}
  public function store(Request $request)
{   

    $name = Name::inRandomOrder()->first()->name;


    Friend::create([
    'my_id'=>Auth::user()->id,
    'friends_id'=>$request->friends_id,
    'name' => $name,
]);

    Friend::create([
    'friends_id'=>Auth::user()->id,
    'my_id'=>$request->friends_id,
    'name' => $name,
]);

     return redirect('/home');
}
}

不要使用
::all()
将每个
名称加载到集合中,而是尝试使用
名称::inRandomOrder()->first()->Name。除此之外,不要使用
'name'=>$name->name,
因为你已经在上面调用
->name
(这是一个字符串),所以你基本上是在做
'name'=>$name->name->name
,这是行不通的。
'name'=>$name
。就是这样。您是否尝试使用其他属性,例如
id
?您还可以共享名称表中的行吗?很高兴知道您的问题已经解决了!我鼓励你把问题的答案贴出来。太好了!因此,当有人面临同样的问题时,他/她可以找到解决方案。