以下のようなテーブルがあります。
【Aテーブル】
id
prefecture
【Bテーブル】
id
weather_id
AテーブルとBテーブルはprefecureとidをhasOneで紐づけしています。
public function Prefectures(){ return $this->hasOne('App\Models\Prefecutre', 'id', 'prefecture'); }
Aテーブルを使用したページを作成しており、コントローラーでBテーブルのweather_idを取得したいと考えています。
調べた結果whereHasメソッドで取れると思いましたので以下のように書きましたが、$prefには何も取ってこれていないようです。
$pref = Hoge::whereHas('prefectures', function($query){ $query->where('id', 'weather_id'); })->get();
基本的な部分かもしれませんが、お教え頂きたいと思います。
よろしくお願い致します。
use Illuminate\Http\Request; use App\Models\Prefecture; use Weidner\Goutte\GoutteFacade as GoutteFacade; cladd DriveController extends Controller { protected $pref; public function __construct(Prefecture $prefecture){ $this->pref = $prefecture; } public function page($id){ $attribute = Attribute::all(); $dd_data = $this->rm->find($id); //お天気プログラム //ここに$prefが必要 $weather_url = 'https://www.jma.go.jp/jp/week/' . $pref . '.html'; $goutte = GoutteFacade::request('GET', $weather_url); $weathers = array(); $goutte->filter('.for')->each(function ($node) use (&$weathers) { $weathers[] = $node->text(); }); $params = [ 'texts' => $weathers, ]; return view('Drive/page', compact('attribute', 'dd_data'), $params); } }
Prefecture Table (DB)
id / name / weather_id
Driveにはprefectureというidを保持しており、PrefectureテーブルとHasOneでリレーションしています。
回答2件
あなたの回答
tips
プレビュー